第一次接觸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.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.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集羣以初步搭建完畢,其中還有其它參數能夠配置,歡迎你們進行分享和交流