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

溫馨提示×

溫馨提示×

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

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

Hadoop面試題和答案有哪些

發布時間:2021-12-09 15:35:00 來源:億速云 閱讀:171 作者:iii 欄目:大數據

本篇內容介紹了“Hadoop面試題和答案有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

       一、什么是Hadoop?

  Hadoop是一個開源軟件框架,用于存儲大量數據,并發處理/查詢在具有多個商用硬件(即低成本硬件)節點的集群上的那些數據。總之,Hadoop包括以下內容:

  HDFS(Hadoop Distributed File System,Hadoop分布式文件系統):HDFS允許你以一種分布式和冗余的方式存儲大量數據。例如,1 GB(即1024 MB)文本文件可以拆分為16 * 128MB文件,并存儲在Hadoop集群中的8個不同節點上。每個分裂可以復制3次,以實現容錯,以便如果1個節點故障的話,也有備份。HDFS適用于順序的“一次寫入、多次讀取”的類型訪問。

  MapReduce:一個計算框架。它以分布式和并行的方式處理大量的數據。當你對所有年齡> 18的用戶在上述1 GB文件上執行查詢時,將會有“8個映射”函數并行運行,以在其128 MB拆分文件中提取年齡> 18的用戶,然后“reduce”函數將運行以將所有單獨的輸出組合成單個最終結果。

  YARN(Yet Another Resource Nagotiator,又一資源定位器):用于作業調度和集群資源管理的框架。

  Hadoop生態系統,擁有15多種框架和工具,如Sqoop,Flume,Kafka,Pig,Hive,Spark,Impala等,以便將數據攝入HDFS,在HDFS中轉移數據(即變換,豐富,聚合等),并查詢來自HDFS的數據用于商業智能和分析。

  某些工具(如Pig和Hive)是MapReduce上的抽象層,而Spark和Impala等其他工具則是來自MapReduce的改進架構/設計,用于顯著提高的延遲以支持近實時(即NRT)和實時處理。

 二、基于Hadoop的數據中心的好處是什么?

  隨著數據量和復雜性的增加,提高了整體SLA(即服務水平協議)。例如,“Shared Nothing”架構,并行處理,內存密集型處理框架,如Spark和Impala,以及YARN容量調度程序中的資源搶占。

  1、縮放數據倉庫可能會很昂貴:添加額外的高端硬件容量以及獲取數據倉庫工具的許可證可能會顯著增加成本。基于Hadoop的解決方案不僅在商品硬件節點和開源工具方面更便宜,而且還可以通過將數據轉換卸載到Hadoop工具(如Spark和Impala)來補足數據倉庫解決方案,從而更高效地并行處理大數據。這也將釋放數據倉庫資源。

  2、探索新的渠道和線索:Hadoop可以為數據科學家提供探索性的沙盒,以從社交媒體,日志文件,電子郵件等地方發現潛在的有價值的數據,這些數據通常在數據倉庫中不可得。

  3、更好的靈活性:通常業務需求的改變,也需要對架構和報告進行更改。基于Hadoop的解決方案不僅可以靈活地處理不斷發展的模式,還可以處理來自不同來源,如社交媒體,應用程序日志文件,image,PDF和文檔文件的半結構化和非結構化數據。

  四、簡單描述如何安裝配置一個apache開源版hadoop,只描述即可,無需列出完整步驟,能列出步驟更好。

  1、安裝JDK并配置環境變量(/etc/profile);

  2、關閉防火墻;

  3、配置hosts文件,方便hadoop通過主機名訪問(/etc/hosts);

  4、設置ssh免密碼登錄;

  5、解壓縮hadoop安裝包,并配置環境變量;

  6、修改配置文件($HADOOP_HOME/conf);hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml;

  7、格式化hdfs文件系統(hadoop namenode -format);

  8、啟動hadoop($HADOOP_HOME/bin/start-all.sh);

  9、使用jps查看進程。

  五、請列出正常工作的hadoop集群中hadoop都分別需要啟動那些進程,他們的作用分別是什么,盡可能寫的全面些。

  1、NameNode: HDFS的守護進程,負責記錄文件是如何分割成數據塊,以及這些數據塊分別被存儲到那些數據節點上,它的主要功能是對內存及IO進行集中管理。

  2、Secondary NameNode:輔助后臺程序,與NameNode進行通信,以便定期保存HDFS元數據的快照。

  3、DataNode:負責把HDFS數據塊讀寫到本地的文件系統。

  4、JobTracker:負責分配task,并監控所有運行的task。

  5、TaskTracker:負責執行具體的task,并與JobTracker進行交互。

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

  比較流行的三種調度器有:默認調度器FIFO,計算能力調度器Capacity Scheduler,公平調度器Fair Scheduler

  1、默認調度器FIFO:hadoop中默認的調度器,采用先進先出的原則。

  2、計算能力調度器Capacity Scheduler:選擇占用資源小,優先級高的先執行。

  3、公平調度器Fair Scheduler:同一隊列中的作業公平共享隊列中所有資源。

  七、Hive有那些方式保存元數據的,各有那些特點。

  1、內存數據庫derby,較小,不常用;

  2、本地mysql,較常用;

  3、遠程mysql,不常用。

  八、簡述hadoop實現Join的幾種方法。

  1、reduce side join

  reduce side join是一種最簡單的join方式,其主要思想如下:

  在map階段,map函數同時讀取兩個文件File1和File2,為了區分兩種來源的key/value數據對,對每條數據打一個標簽(tag),比如:tag=0表示來自文件File1,tag=2表示來自文件File2。即:map階段的主要任務是對不同文件中的數據打標簽。

  在reduce階段,reduce函數獲取key相同的來自File1和File2文件的value list, 然后對于同一個key,對File1和File2中的數據進行join(笛卡爾乘積)。即:reduce階段進行實際的連接操作。

  2、map side join

  之所以存在reduce side join,是因為在map階段不能獲取所有需要的join字段,即:同一個key對應的字段可能位于不同map中。Reduce side join是非常低效的,因為shuffle階段要進行大量的數據傳輸。

  Map side join是針對以下場景進行的優化:兩個待連接表中,有一個表非常大,而另一個表非常小,以至于小表可以直接存放到內存中。這樣,我們可以將小表復制多份,讓每個map task內存中存在一份(比如存放到hash table中),然后只掃描大表:對于大表中的每一條記錄key/value,在hash table中查找是否有相同的key的記錄,如果有,則連接后輸出即可。

  為了支持文件的復制,Hadoop提供了一個類DistributedCache,使用該類的方法如下:

  (1)用戶使用靜態方法

  DistributedCache.addCacheFile()指定要復制的文件,它的參數是文件的URI(如果是HDFS上的文件,可以這樣:hdfs://namenode:9000/home/XXX/file,其中9000是自己配置的NameNode端口號)。

  JobTracker在作業啟動之前會獲取這個URI列表,并將相應的文件拷貝到各個TaskTracker的本地磁盤上。

  (2)用戶使用

  DistributedCache.getLocalCacheFiles()方法獲取文件目錄,并使用標準的文件讀寫API讀取相應的文件。

  3、SemiJoin

  SemiJoin,也叫半連接,是從分布式數據庫中借鑒過來的方法。它的產生動機是:對于reduce side join,跨機器的數據傳輸量非常大,這成了join操作的一個瓶頸,如果能夠在map端過濾掉不會參加join操作的數據,則可以大大節省網絡IO。

  實現方法很簡單:選取一個小表,假設是File1,將其參與join的key抽取出來,保存到文件File3中,File3文件一般很小,可以放到內存中。在map階段,使用DistributedCache將File3復制到各個TaskTracker上,然后將File2中不在File3中的key對應的記錄過濾掉,剩下的reduce階段的工作與reduce side join相同。

  4、reduce side join + BloomFilter

  在某些情況下,SemiJoin抽取出來的小表的key集合在內存中仍然存放不下,這時候可以使用BloomFiler以節省空間。

  BloomFilter最常見的作用是:判斷某個元素是否在一個集合里面。它最重要的兩個方法是:add() 和contains()。最大的特點是不會存在false negative,即:如果contains()返回false,則該元素一定不在集合中,但會存在一定的true negative,即:如果contains()返回true,則該元素可能在集合中。

  因而可將小表中的key保存到BloomFilter中,在map階段過濾大表,可能有一些不在小表中的記錄沒有過濾掉(但是在小表中的記錄一定不會過濾掉),這沒關系,只不過增加了少量的網絡IO而已。

“Hadoop面試題和答案有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

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

AI

普安县| 忻城县| 余江县| 古蔺县| 灵川县| 鄂尔多斯市| 盐池县| 临沧市| 安徽省| 浏阳市| 顺义区| 泗阳县| 隆子县| 晋城| 连城县| 罗山县| 聂拉木县| 巴南区| 正安县| 改则县| 榆中县| 宜黄县| 开原市| 盘山县| 讷河市| 红桥区| 错那县| 微山县| 乌审旗| 武威市| 沁阳市| 山阴县| 韶关市| 扶余县| 永清县| 泾阳县| 罗源县| 亚东县| 曲周县| 阳新县| 平山县|