Hadoop 3.0 嚐鮮

題記

第一次接觸Hadoop的時候是15年,在實習公司進入大數據業務組(技術總監,項目經理,我),那時候每天捧着《Hadoop權威指南》雲裏霧裏的看,一遍學習Linux,一遍看着書裏的架構原理。後來直接用一臺Ubuntu就開始安裝Hadoop"集羣"了+_+,最後在安裝到HBase的時候,完全崩潰,由於是僞分佈式,到了Zookeeper的配置,真的真的不知道該怎麼去配置了,因此以失敗了結,後來公司採用的是TDH星環,國內一個還不錯的發行版。再後來一年,大學畢業,開始全身心的作大數據,Hadoop 2.5.2, Hive, HBase, Spark1.6, Kafka0.8已經徹底的搭建起來了。時光到了如今,公司環境在用Hadoop2.7, Spark 2.1兩個主要的大數據計算框架,早在一年前,我就已經據說Hadoop 3.0要踏着聖光重出江湖了,因而準備拿本身的集羣搭建玩一玩......html

Hadoop 3.0簡介

本次介紹的版本:hadoop-3.0.0-beta1
這是3.0.0發行版中的第一個測試版本。它由自3.0.0-alpha4以來的576個錯誤修復,改進和其餘加強組成。這是計劃成爲最終的alpha版本,下一個版本是3.0.0 GA。
此版本API是穩定的,但沒有質量保證,不適用於生產用途。java

Java環境
Java 8 以上node

HDFS中新特性‘糾刪碼’
糾刪碼是一種持久存儲數據的方法,與複製相比,顯着節省空間。像Reed-Solomon(10,4)這樣的標準編碼有1.4倍的空間開銷,而標準HDFS複製的開銷是3倍。因爲擦除編碼在重建期間施加了額外的開銷而且主要執行遠程讀取,所以傳統上它被用於存儲冷數據,較不頻繁訪問的數據。部署此功能時,用戶應考慮刪除編碼的網絡和CPU開銷。shell

YARN Timeline Service
YARN Timeline Service 解決了兩個主要挑戰:提升時間軸服務的可伸縮性和可靠性,並經過引入流量和聚合來提升可用性。apache

Shell腳本重寫
Hadoop shell腳本已被重寫,以修復許多長期存在的錯誤,幷包含一些新功能。儘管保持兼容性,但有些更改可能會破壞現有的安裝。vim

MapReduce任務級本地優化
MapReduce增長了對map output collector本地實現的支持。對於shuffle操做,這能夠獲得30%或更多的性能提高。網絡

支持2個以上NameNode
爲單個活動NameNode和單個Standby NameNode提供了HDFS NameNode高可用性的初始實現。經過將編輯複製到三個JournalNode的法定數量,該架構可以容忍系統中任何一個節點的故障。可是,有些部署須要更高的容錯度。這是由這個新功能啓用的,它容許用戶運行多個備用NameNode。例如,經過配置三個NameNode和五個JournalNode,羣集可以容忍兩個節點的故障,而不是一個故障。架構

多個服務的默認端口已被更改
之前,多個Hadoop服務的默認端口位於Linux臨時端口範圍(32768-61000)內。這意味着在啓動時,因爲與其餘應用程序的衝突,服務有時會沒法綁定到端口。這些衝突的端口已經被移出了臨時範圍,影響了NameNode,Secondary NameNode,DataNode和KMS。咱們的文檔已經適當地更新了,更新端口詳情請看官網app

支持Microsoft Azure Data Lake和Aliyun Object Storage System文件系統鏈接器
Hadoop如今支持與Microsoft Azure Data Lake和Aliyun對象存儲系統的集成,做爲替代Hadoop兼容的文件系統。框架

內部datanode平衡器
一個DataNode管理多個磁盤。在正常的寫入操做中,磁盤將被均勻地填滿。可是,添加或替換磁盤可能會致使DataNode中出現明顯的誤差。這種狀況並非由現有的HDFS平衡器來處理的,這個平衡器自己是關於DN內部而不是內部偏斜的。這種狀況由新的DataNode內部平衡功能處理,經過hdfs diskbalancer CLI 調用。

重作守護進程和任務堆管理
Hadoop守護進程和MapReduce任務的堆管理已經進行了一系列更改。引入了配置守護進程堆大小的新方法。值得注意的是,如今能夠根據主機的內存大小自動調整,而HADOOP_HEAPSIZE變量已經被棄用了。簡化了映射的配置並減小了任務堆大小,所以不須要在任務配置中和Java選項中指定所需的堆大小。已經指定的現有配置不受此更改的影響。

Hadoop 3.0安裝

版本:hadoop-3.0.0-beta1
下載地址:http://hadoop.apache.org/rele...
java 1.8
CentOs 6.5

四臺節點: node1(NN),node2, node3,node4

1.安裝java環境變量
將JDK1.8上傳至四臺虛擬機,解壓
vim /etc/profile
將下面的配置添加到文件中

export JAVA_HOME=/home/jdk1.8.0_151
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

執行 source /etc/profile 生效

執行 java -version檢驗是否安裝成功

2.四臺節點配置免密鑰登錄
此部分略,由於集羣之前配置過,再次就不重複配置,百度便可

3.Hadoop安裝配置
將Hadoop安裝包hadoop-3.0.0-beta1.tar.gz上傳至node1節點 /usr/local/ 目錄下。

解壓:

tar -zxvf hadoop-3.0.0-beta1.tar.gz

設置環境變量:

vim /etc/profile
添加

export HADOOP_HOME=/usr/local/hadoop-3.0.0-beta1 
export PATH=$PATH:$HADOOP_HOME/bin 
export PATH=$PATH:$HADOOP_HOME/sbin

同步到各個節點:

scp /etc/profile root@node2:/etc/
scp /etc/profile root@node3:/etc/
scp /etc/profile root@node4:/etc/

配置生效:source /etc/profile

接下來先在安裝目錄下建立幾個咱們須要的目錄:
安裝目錄:/usr/local/hadoop-3.0.0-beta1/
mkdir hdfs,mkdir tmp,mkdir /hdfs/name,mkdir /hdfs/data

修改hadoop配置文件:
cd /usr/local/hadoop-3.0.0-beta1/etc/hadoop/

workers
添加節點信息 vim workers

node2
node3
node4

core-site.xml
添加配置項 vim core-site.xml

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node1:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop-3.0.0-beta1/tmp</value>
</property>

hdfs-site.xml
添加配置項 vim hdfs-site.xml

<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>/usr/local/hadoop-3.0.0-beta1/hdfs/name</value>
</property>
<property>
    <name>dfs.namenode.data.dir</name>
    <value>/usr/local/hadoop-3.0.0-beta1/hdfs/data</value>
</property>

mapred-site.xml
添加配置項 vim mapred-site.xml

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
    <name>mapreduce.admin.user.env</name>
  <value>HADOOP_MAPRED_HOME=$HADOOP_COMMON_HOME</value>
</property>
<property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=$HADOOP_COMMON_HOME</value>
</property>

yarn-site.xml
添加配置項 vim yarn-site.xml

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node1</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

hadoop-env.sh
添加配置項 vim hadoop-env.sh

export JAVA_HOME=/home/jdk1.8.0_151

start-dfs.sh
注意目錄:

cd /usr/local/hadoop-3.0.0-beta1/sbin

添加配置項 vim start-dfs.sh

HDFS_DATANODE_USER=root 
HADOOP_SECURE_DN_USER=root
HDFS_NAMENODE_USER=root 
HDFS_SECONDARYNAMENODE_USER=root

添加權限用戶,根據各自集羣用戶角色自定義填寫,本人用的是root用戶

stop-dfs.sh
注意目錄:

cd /usr/local/hadoop-3.0.0-beta1/sbin

添加配置項 vim stop-dfs.sh

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=root
YARN_NODEMANAGER_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

接下來將node1節點上配置好的Hadoop文檔,同步到其餘節點

scp -r /usr/local/hadoop-3.0.0-beta1 root@node2:/usr/local/
scp -r /usr/local/hadoop-3.0.0-beta1 root@node3:/usr/local/
scp -r /usr/local/hadoop-3.0.0-beta1 root@node4:/usr/local/

至此Hadoop集羣配置步驟完成

驗證:

cd /usr/local/hadoop-3.0.0-beta1/sbin

執行:./start-dfs.sh

圖片描述

進入集羣UI :
地址:node1:9870
記得配置hosts映射文件
圖片描述

各位在啓動集羣時,注意觀察日誌,日誌信息頗有做用,如報錯,咱們可根據錯誤信息進行排查

以上則證實Hadoop集羣以初步搭建完畢,其中還有其它參數能夠配置,歡迎你們進行分享和交流

相關文章
相關標籤/搜索