Hadoop學習——其它(集羣,MR調優,數據傾斜等)

1、Hadoop2.0的高可用

有兩個NameNode節點,一個active,一個standby時刻同步active的數據),從而實現高可用。

兩個NameNode之間通過JournalNodes的獨立進程進行通信,當active中的NameNode的命名空間有任何改變時,便會通知大部分的JournalNode進程。standby的NameNode有能力讀取JN中的變更信息,並且一直觀察edit log的變化,會將變化的信息讀取到自己的命名空間,從而達到了同步的狀態。

當active故障後,可以藉助於ZooKeeper進行切換

2、Hadoop集羣搭建大致步驟

1)永久關閉防火牆;

2)配置主機名和host文件,方便通信;

3)機器之間免密互通;

4)安裝JDK,安裝Zookeeper集羣;

5)配置conf/下的文件,例如hadoop-env.sh、core-site.xml、hdfs-side.xml、mapred-side.xml、yarn-site.xml、slaves;

6)每臺機器配置基本相同,通過scp發送即可,記得要修改的配置文件。

3、MR調優策略

減少數據量的傳輸;

儘量使用內存;

減少與磁盤IO交互的次數;

增大任務並行數;

4、Hadoop處理小文件的方法

開啓Hadoop的JVM重用機制(uber模式),避免海量文件頻繁的啓停JVM;

利用Hadoop提供的HAR技術(針對已存在的大量小文件);

map side join,將多個小文件合成一個或少量文件 – CombineTextInputFormat

5、爲什麼HDFS不適合存儲大量的小文件?

由於在HDFS有NameNode存儲文件位置信息的,使用的是內存,若存在大量的小文件,維護信息會導致NameNode的大部分內存用於存儲,不利於NameNode處理。

6、數據傾斜

在MapReduce中,經常會出現數據傾斜的情況,例如訂單-商品的業務中,熱銷產品與冷銷產品之間,此時可以利用Map Side Join,就是DistributedCache(Hadoop內置的分佈式緩存機制)實現。

或者說單詞統計時造成數據傾斜,可以在map端的key後面添加一個隨機數,這樣可以將一個高頻詞彙拆分,之後在進行合併。

======================================================================

擴展:Reduce中底層使用了一個地址複用技術,即在迭代values時,取出的值有變化但是地址值不變,也就是不能直接添加取出的值(對象),此時可以使用克隆(clone())

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章