91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hadoop大數據面試題有哪些

發布時間:2022-01-15 09:19:29 來源:億速云 閱讀:353 作者:小新 欄目:大數據

這篇文章將為大家詳細講解有關Hadoop大數據面試題有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

  1.0 簡要描述如何安裝配置apache的一個開源hadoop,只描述即可,無需列出具體步驟,列出具體步驟更好。

  1使用root賬戶登錄

  2 修改IP

  3 修改host主機名

  4 配置SSH免密碼登錄

  5 關閉防火墻

  6 安裝JDK

  6 解壓hadoop安裝包

  7 配置hadoop的核心文件 hadoop-env.sh,core-site.xml , mapred-site.xml , hdfs-site.xml

  8 配置hadoop環境變量

  9 格式化 hadoop namenode-format

  10 啟動節點start-all.sh

  2.0 請列出正常的hadoop集群中hadoop都分別需要啟動 哪些進程,他們的作用分別都是什么,請盡量列的詳細一些。

  答:namenode:負責管理hdfs中文件塊的元數據,響應客戶端請求,管理datanode上文件block的均衡,維持副本數量

  Secondname:主要負責做checkpoint操作;也可以做冷備,對一定范圍內數據做快照性備份。

  Datanode:存儲數據塊,負責客戶端對數據塊的io請求

  Jobtracker :管理任務,并將任務分配給 tasktracker。

  Tasktracker: 執行JobTracker分配的任務。

  Resourcemanager

  Nodemanager

  Journalnode

  Zookeeper

  Zkfc

  3.0請寫出以下的shell命令

  (1)殺死一個job

  (2)刪除hdfs上的 /tmp/aaa目錄

  (3)加入一個新的存儲節點和刪除一個節點需要執行的命令

  答:(1)hadoop job –list 得到job的id,然后執 行 hadoop job -kill jobId就可以殺死一個指定jobId的job工作了。

  (2)hadoopfs -rmr /tmp/aaa

  (3) 增加一個新的節點在新的幾點上執行

  Hadoop daemon.sh start datanode

  Hadooop daemon.sh start tasktracker/nodemanager

  下線時,要在conf目錄下的excludes文件中列出要下線的datanode機器主機名

  然后在主節點中執行 hadoop dfsadmin -refreshnodes à下線一個datanode

  刪除一個節點的時候,只需要在主節點執行

  hadoop mradmin -refreshnodes ---à下線一個tasktracker/nodemanager

  4.0 請列出你所知道的hadoop調度器,并簡要說明其工作方法

  答:Fifo schedular :默認,先進先出的原則

  Capacity schedular :計算能力調度器,選擇占用最小、優先級高的先執行,依此類推。

  Fair schedular:公平調度,所有的 job 具有相同的資源。

  5.0 請列出你在工作中使用過的開發mapreduce的語言

  答:java,hive,(python,c++)hadoop streaming

  6.0 當前日志采樣格式為

  a , b , c , d

  b , b , f , e

  a , a , c , f

  請你用最熟悉的語言編寫mapreduce,計算第四列每個元素出現的個數

  答:

  public classWordCount1 {

  public static final String INPUT_PATH ="hdfs://hadoop0:9000/in";

  public static final String OUT_PATH ="hdfs://hadoop0:9000/out";

  public static void main(String[] args)throws Exception {

  Configuration conf = newConfiguration();

  FileSystem fileSystem =FileSystem.get(conf);

  if(fileSystem.exists(newPath(OUT_PATH))){}

  fileSystem.delete(newPath(OUT_PATH),true);

  Job job = newJob(conf,WordCount1.class.getSimpleName());

  //1.0讀取文件,解析成key,value對

  FileInputFormat.setInputPaths(job,newPath(INPUT_PATH));

  //2.0寫上自己的邏輯,對輸入的可以,value進行處理,轉換成新的key,value對進行輸出

  job.setMapperClass(MyMapper.class);

  job.setMapOutputKeyClass(Text.class);

  job.setMapOutputValueClass(LongWritable.class);

  //3.0對輸出后的數據進行分區

  //4.0對分區后的數據進行排序,分組,相同key的value放到一個集合中

  //5.0對分組后的數據進行規約

  //6.0對通過網絡將map輸出的數據拷貝到reduce節點

  //7.0 寫上自己的reduce函數邏輯,對map輸出的數據進行處理

  job.setReducerClass(MyReducer.class);

  job.setOutputKeyClass(Text.class);

  job.setOutputValueClass(LongWritable.class);

  FileOutputFormat.setOutputPath(job,new Path(OUT_PATH));

  job.waitForCompletion(true);

  }

  static class MyMapper extendsMapper{

  @Override

  protected void map(LongWritablek1, Text v1,

  org.apache.hadoop.mapreduce.Mapper.Contextcontext)

  throws IOException,InterruptedException {

  String[] split =v1.toString().split("\t");

  for(String words :split){

  context.write(split[3],1);

           }

      }

  }

  static class MyReducer extends Reducer{

  protected void reduce(Text k2,Iterable v2,

  org.apache.hadoop.mapreduce.Reducer.Contextcontext)

  throws IOException,InterruptedException {

  Long count = 0L;

  for(LongWritable time :v2){

  count += time.get();

  }

  context.write(v2, newLongWritable(count));

          }

     }

  }

  7.0 你認為用java , streaming , pipe方式開發map/reduce , 各有哪些優點

  就用過 java 和 hiveQL。

  Java 寫 mapreduce 可以實現復雜的邏輯,如果需求簡單,則顯得繁瑣。

  HiveQL 基本都是針對 hive 中的表數據進行編寫,但對復雜的邏輯(雜)很難進行實現。寫起來簡單。

  8.0 hive有哪些方式保存元數據,各有哪些優點

  三種:自帶內嵌數據庫derby,挺小,不常用,只能用于單節點

  mysql常用

  上網上找了下專業名稱:single user mode..multiuser mode...remote user mode

  9.0 請簡述hadoop怎樣實現二級排序(就是對key和value雙排序)

  第一種方法是,Reducer將給定key的所有值都緩存起來,然后對它們再做一個Reducer內排序。但是,由于Reducer需要保存給定key的所有值,可能會導致出現內存耗盡的錯誤。

  第二種方法是,將值的一部分或整個值加入原始key,生成一個組合key。這兩種方法各有優勢,第一種方法編寫簡單,但并發度小,數據量大的情況下速度慢(有內存耗盡的危險),

  第二種方法則是將排序的任務交給MapReduce框架shuffle,更符合Hadoop/Reduce的設計思想。這篇文章里選擇的是第二種。我們將編寫一個Partitioner,確保擁有相同key(原始key,不包括添加的部分)的所有數據被發往同一個Reducer,還將編寫一個Comparator,以便數據到達Reducer后即按原始key分組。

  10.簡述hadoop實現jion的幾種方法

  Map side join----大小表join的場景,可以借助distributed cache

  Reduce side join

  11.0 請用java實現非遞歸二分查詢

  12.0 請簡述mapreduce中的combine和partition的作用

  答:combiner是發生在map的最后一個階段,其原理也是一個小型的reducer,主要作用是減少輸出到reduce的數據量,緩解網絡傳輸瓶頸,提高reducer的執行效率。

  partition的主要作用將map階段產生的所有kv對分配給不同的reducer task處理,可以將reduce階段的處理負載進行分攤

  13.0 hive內部表和外部表的區別

  Hive 向內部表導入數據時,會將數據移動到數據倉庫指向的路徑;若是外部表,數據的具體存放目錄由用戶建表時指定

  在刪除表的時候,內部表的元數據和數據會被一起刪除,

  而外部表只刪除元數據,不刪除數據。

  這樣外部表相對來說更加安全些,數據組織也更加靈活,方便共享源數據。

  14. Hbase的rowKey怎么創建比較好?列簇怎么創建比較好?

  答:

  rowKey最好要創建有規則的rowKey,即最好是有序的。

  經常需要批量讀取的數據應該讓他們的rowkey連續;

  將經常需要作為條件查詢的關鍵詞組織到rowkey中;

  列族的創建:

  按照業務特點,把數據歸類,不同類別的放在不同列族

  15. 用mapreduce怎么處理數據傾斜問題

  本質:讓各分區的數據分布均勻

  可以根據業務特點,設置合適的partition策略

  如果事先根本不知道數據的分布規律,利用隨機抽樣器抽樣后生成partition策略再處理

  16. hadoop框架怎么來優化

  可以從很多方面來進行:比如hdfs怎么優化,mapreduce程序怎么優化,yarn的job調度怎么優化,hbase優化,hive優化。。。。。。。

  17. hbase內部機制是什么

  Hbase是一個能適應聯機業務的數據庫系統

  物理存儲:hbase的持久化數據是存放在hdfs上

  存儲管理:一個表是劃分為很多region的,這些region分布式地存放在很多regionserver上

  Region內部還可以劃分為store,store內部有memstore和storefile

  版本管理:hbase中的數據更新本質上是不斷追加新的版本,通過compact操作來做版本間的文件合并

  Region的split

  集群管理:zookeeper + hmaster(職責) + hregionserver(職責)

  18. 我們在開發分布式計算job的時候,是否可以去掉reduce階段

  答:可以,例如我們的集群就是為了存儲文件而設計的,不涉及到數據的計算,就可以將mapReduce都省掉。

  比如,流量運營項目中的行為軌跡增強功能部分

  怎么樣才能實現去掉reduce階段

  去掉之后就不排序了,不進行shuffle操作了

  19 hadoop中常用的數據壓縮算法

  Lzo

  Gzip

  Default

  Snapyy

  如果要對數據進行壓縮,最好是將原始數據轉為SequenceFile 或者 Parquet File(spark)

  20. mapreduce的調度模式(題意模糊,可以理解為yarn的調度模式,也可以理解為mr的內部工作流程)

  答: appmaster作為調度主管,管理maptask和reducetask

  Appmaster負責啟動、監控maptask和reducetask

  Maptask處理完成之后,appmaster會監控到,然后將其輸出結果通知給reducetask,然后reducetask從map端拉取文件,然后處理;

  當reduce階段全部完成之后,appmaster還要向resourcemanager注銷自己

  21. hive底層與數據庫交互原理

  Hive的查詢功能是由hdfs + mapreduce結合起來實現的

  Hive與mysql的關系:只是借用mysql來存儲hive中的表的元數據信息,稱為metastore

  22. hbase過濾器實現原則

  可以說一下過濾器的父類(比較過濾器,專用過濾器)

  過濾器有什么用途:

  增強hbase查詢數據的功能

  減少服務端返回給客戶端的數據量

  23. reduce之后數據的輸出量有多大(結合具體場景,比如pi)

  Sca階段的增強日志(1.5T---2T)

  過濾性質的mr程序,輸出比輸入少

  解析性質的mr程序,輸出比輸入多(找共同朋友)

  24. 現場出問題測試mapreduce掌握情況和hive的ql語言掌握情況

  25.datanode在什么情況下不會備份數據

  答:在客戶端上傳文件時指定文件副本數量為1

  26.combine出現在哪個過程

  答:shuffle過程中

  具體來說,是在maptask輸出的數據從內存溢出到磁盤,可能會調多次

  Combiner使用時候要特別謹慎,不能影響最后的邏輯結果

  27. hdfs的體系結構

  答:

  集群架構:

  namenode datanode secondarynamenode

  (active namenode ,standby namenode)journalnode zkfc

  內部工作機制:

  數據是分布式存儲的

  對外提供一個統一的目錄結構

  對外提供一個具體的響應者(namenode)

  數據的block機制,副本機制

  Namenode和datanode的工作職責和機制

  讀寫數據流程

  28. flush的過程

  答:flush是在內存的基礎上進行的,首先寫入文件的時候,會先將文件寫到內存中,當內存寫滿的時候,一次性的將文件全部都寫到硬盤中去保存,并清空緩存中的文件,

  29. 什么是隊列

  答:是一種調度策略,機制是先進先出

  30. List與set的區別

  答:List和Set都是接口。他們各自有自己的實現類,有無順序的實現類,也有有順序的實現類。

  最大的不同就是List是可以重復的。而Set是不能重復的。

  List適合經常追加數據,插入,刪除數據。但隨即取數效率比較低。

  Set適合經常地隨即儲存,插入,刪除。但是在遍歷時效率比較低。

  31.數據的三范式

  答:

  第一范式()無重復的列

  第二范式(2NF)屬性完全依賴于主鍵 [消除部分子函數依賴]

  第三范式(3NF)屬性不依賴于其它非主屬性 [消除傳遞依賴]

  32.三個datanode中當有一個datanode出現錯誤時會怎樣?

  答:

  Namenode會通過心跳機制感知到datanode下線

  會將這個datanode上的block塊在集群中重新復制一份,恢復文件的副本數量

  會引發運維團隊快速響應,派出同事對下線datanode進行檢測和修復,然后重新上線

  33.sqoop在導入數據到mysql中,如何不重復導入數據,如果存在數據問題,sqoop如何處理?

  答:FAILED java.util.NoSuchElementException

  此錯誤的原因為sqoop解析文件的字段與MySql數據庫的表的字段對應不上造成的。因此需要在執行的時候給sqoop增加參數,告訴sqoop文件的分隔符,使它能夠正確的解析文件字段。

  hive默認的字段分隔符為'\001'

  34.描述一下hadoop中,有哪些地方使用到了緩存機制,作用分別是什么?

  答:

  Shuffle中

  Hbase----客戶端/regionserver

  35.MapReduce優化經驗

  答:(1.)設置合理的map和reduce的個數。合理設置blocksize

  (2.)避免出現數據傾斜

  (3.combine函數

  (4.對數據進行壓縮

  (5.小文件處理優化:事先合并成大文件,combineTextInputformat,在hdfs上用mapreduce將小文件合并成SequenceFile大文件(key:文件名,value:文件內容)

  (6.參數優化

  36.請列舉出曾經修改過的/etc/下面的文件,并說明修改要解決什么問題?

  答:/etc/profile這個文件,主要是用來配置環境變量。讓hadoop命令可以在任意目錄下面執行。

  /ect/sudoers

  /etc/hosts

  /etc/sysconfig/network

  /etc/inittab

  37.請描述一下開發過程中如何對上面的程序進行性能分析,對性能分析進行優化的過程。

  38. 現有 1 億個整數均勻分布,如果要得到前 1K 個最大的數,求最優的算法。

  參見《海量數據算法面試大全》

  39.mapreduce的大致流程

  答:主要分為八個步驟

  1/對文件進行切片規劃

  2/啟動相應數量的maptask進程

  3/調用FileInputFormat中的RecordReader,讀一行數據并封裝為k1v1

  4/調用自定義的map函數,并將k1v1傳給map

  5/收集map的輸出,進行分區和排序

  6/reduce task任務啟動,并從map端拉取數據

  7/reduce task調用自定義的reduce函數進行處理

  8/調用outputformat的recordwriter將結果數據輸出

  40.用mapreduce實現sql語 select count (x) from a group by b;

  41.搭建hadoop集群 , master和slaves都運行哪些服務

  答:master主要是運行我們的主節點,slaves主要是運行我們的從節點。

  42. hadoop參數調優

  43. pig , latin , hive語法有什么不同

  44. 描述Hbase,ZooKeeper搭建過程

  45.hadoop運行原理

  答:hadoop的主要核心是由兩部分組成,HDFS和mapreduce,首先HDFS的原理就是分布式的文件存儲系統,將一個大的文件,分割成多個小的文件,進行存儲在多臺服務器上。

  Mapreduce的原理就是使用JobTracker和TaskTracker來進行作業的執行。Map就是將任務展開,reduce是匯總處理后的結果。

  46.mapreduce的原理

  答:mapreduce的原理就是將一個MapReduce框架由一個單獨的master JobTracker和每個集群節點一個slave TaskTracker共同組成。master負責調度構成一個作業的所有任務,這些的slave上,master監控它們的執行,重新執行已經失敗的任務。而slave僅負責執行由maste指派的任務。

  47.HDFS存儲機制

  答:HDFS主要是一個分布式的文件存儲系統,由namenode來接收用戶的操作請求,然后根據文件大小,以及定義的block塊的大小,將大的文件切分成多個block塊來進行保存

  48.舉一個例子說明mapreduce是怎么運行的。

  Wordcount

  49.如何確認hadoop集群的健康狀況

  答:有完善的集群監控體系(ganglia,nagios)

  Hdfs dfsadmin –report

  Hdfs haadmin –getServiceState nn1

  50.mapreduce作業,不讓reduce輸出,用什么代替reduce的功能。

  51.hive如何調優

  答:hive最終都會轉化為mapreduce的job來運行,要想hive調優,實際上就是mapreduce調優,可以有下面幾個方面的調優。解決收據傾斜問題,減少job數量,設置合理的map和reduce個數,對小文件進行合并,優化時把握整體,單個task最優不如整體最優。按照一定規則分區。

  52.hive如何控制權限

  我們公司沒做,不需要

  53.HBase寫數據的原理是什么?

  答:

  54.hive能像關系型數據庫那樣建多個庫嗎?

  答:當然能了。

  55.HBase宕機如何處理

  答:宕機分為HMaster宕機和HRegisoner宕機,如果是HRegisoner宕機,HMaster會將其所管理的region重新分布到其他活動的RegionServer上,由于數據和日志都持久在HDFS中,該操作不會導致數據丟失。所以數據的一致性和安全性是有保障的。

  如果是HMaster宕機,HMaster沒有單點問題,HBase中可以啟動多個HMaster,通過Zookeeper的Master Election機制保證總有一個Master運行。即ZooKeeper會保證總會有一個HMaster在對外提供服務。

  56.假設公司要建一個數據中心,你會如何處理?

  先進行需求調查分析

  設計功能劃分

  架構設計

  吞吐量的估算

  采用的技術類型

  軟硬件選型

  成本效益的分析

  項目管理

  擴展性

  安全性,穩定性

關于“Hadoop大數據面試題有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

忻城县| 南皮县| 开江县| 汨罗市| 上林县| 剑河县| 东源县| 东阳市| 游戏| 化州市| 建宁县| 郎溪县| 峨山| 磐安县| 哈巴河县| 汽车| 柘荣县| 台南市| 新沂市| 乌鲁木齐县| 吉林省| 饶平县| 昭通市| 邯郸县| 丰县| 德惠市| 海安县| 浙江省| 明光市| 祁门县| 梁山县| 开封市| 梅河口市| 广饶县| 原平市| 大宁县| 泾川县| 施甸县| 南召县| 彭水| 孟州市|