1.發(fā)行版本
?? Hadoop發(fā)行版本分為開源社區(qū)版和商業(yè)版,社區(qū)是指同Apache軟件基金會維護的版本,是官方維護的版本體系,是官方維護版本體系。商業(yè)版Hadoop是指由第三方商業(yè)公司在社區(qū)版Hadoop基礎上進行了一些修改、整合以及各個服務組件兼容性測試面發(fā)行的版本,比較著名的cloudera的CDH、mapR等
?? Hadoop的版本很特殊,是由多條分支并行的發(fā)展著。大的來看分為3個大的系列版本:1.x、2.x、3.x。
?? Hadoop2.0則包含一個支持NameNode橫向擴展的HDFS,一個資源管理系統(tǒng)YARN和一個運行在YARN上的離線計算框架MapReduce。當前穩(wěn)定版本:Apache Hadoop 2.7.4
2.集群簡介
?? Hadoop集群具體來說包含兩個集群:HDFS集群和YARN集群,兩者邏輯上分離,但物理上常在一起。
?? HDFS集群負責海量數據的存儲,集群中的角色主要有:
?? NameNode、DataNode、SecondaryNameNode
?? YARN集群負責海量數據運算時的資源調度,集群中的角色主要有:
?? ResourceManager、NodeManager
?? MapReduce是一個分布式運算編程框架,是應用程序開發(fā)包,由用戶按照編程規(guī)范進行程序開發(fā),后打包運行在HDFS集群上,并且受到YARN集群的資源調度管理
?? 集群模式主要用于生產環(huán)境部署。會使用N臺主機組成一個Hadoop集群。 這種部署模式下,主節(jié)點和從節(jié)點分開部署在不同的機器上
?? 我以3個節(jié)點為例進行搭建,角色分配如下:
服務器名 | 服務名 |
---|---|
node-01 | NameNode,DataNode, ResourceManager |
node-02 | DataNode, NodeManager, SecondaryNameNode |
node-03 | DataNode, NodeManager |
3.服務器準備
VMware Workstation Pro 14
CentOS 7.4
4.服務器系統(tǒng)設置
-
同步時間
- 手動同步時間
date -s "2019-04-30 10:00"
- 網絡同步時間
yum install ntpdate
?? # 安裝軟件
ntpdate cn.pool.ntp.org
- 手動同步時間
設置主機名
hostname node-1
配置IP、主機名映射
vi /etc/hosts
-
配置ssh免密登陸
- 生成ssh免登陸密鑰
ssh-keygen -t rsa
(四個回車) - 執(zhí)行完這個命令后,會生成id_rsa(私鑰)、id_rsa.pub(公鑰)
- 將公鑰拷貝到要免密登陸的目標機器上
ssh-copy-id node-2
- 生成ssh免登陸密鑰
-
配置防火墻
- 查看防火墻
systemctl status firewalld.service
- 關閉防火墻
systemctl stop firewalld.service
- 關閉防火墻開機啟動
systemctl disable firewalld.service
- 查看防火墻
5.軟件安裝
下面安裝步驟中的所有安裝包可在“官網下載地址”下載,也可以直接從網盤下載
網盤地址(提取碼:yeb1)
需要的安裝包
yum gcc gcc-c++ cmake openssl-devel ncurse-devel vim
如使用網盤內的安裝包,并且系統(tǒng)和我一樣是centos7.4,也可直接使用hadoop-2.8.5-with-CentOS7.tar.gz包,跳過Hadoop編譯安裝
tar zxf hadoop-2.8.5-with-CentOS7.tar.gz /root/apps/
-
JDK環(huán)境安裝
- 下載JDK安裝包并上傳
官網下載地址
在這里插入圖片描述 - 解壓安裝包
mkdir apps
tar zxf jdk-8u211-linux-x64.tar.gz -C /root/apps/
- 配置環(huán)境變量 /etc/profile
vim /etc/profile export JAVA_HOME=/root/apps/jdk1.8.0_211 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 刷新配置
soure /etc/profile
- 下載JDK安裝包并上傳
-
Hadoop編譯安裝
需要安裝包
yum gcc gcc-c++ cmake openssl-devel ncurse-devel vim
-
安裝maven
官網下載地址
在這里插入圖片描述
解壓:
tar zxf apache-maven-3.6.1-bin.tar.gz -C /usr/local/
配置環(huán)境變量 /etc/profilevim /etc/profile export MAVEN_HOME=/usr/local/apache-maven-3.6.1 export PATH=${PATH}:${MAVEN_HOME}/bin
刷新配置
soure /etc/profile
-
安裝protobuf
軟件下載
解壓:
tar zxf protobuf-2.5.0.tar.gz -C /usr/local/
編譯安裝:
cd /usr/local/protobuf-2.5.0/
./configure
make && make install
驗證:
protoc --version
在這里插入圖片描述 -
Hadoop編譯安裝
選擇2.8.5 source下載
官網下載地址
在這里插入圖片描述
解壓:
tar zxf hadoop-2.8.5-src.tar.gz
編譯
mvn package -DeskipTests -Pdist,native
或者
mvn package -DeskipTests -Pdist,native -Dtar
等待編譯完成,時間很長,可以喝個茶,打個游戲去
在這里插入圖片描述
直到看到上面的內容那就說明編譯完成了。
cp -r hadoop-2.8.5-src/hadoop-dist/target/hadoop-2.8.5/ /root/apps/
6.Hadoop安裝包目錄結構
bin: Hadoop最基本的管理腳本和使用腳本的目錄,這些腳本是sbin目錄下管理腳本的基礎實現,用戶可以直接使用這些腳本管理和使用Hadoop。
etc: Hadoop配置文件所在的目錄,包括core-size.xml、hdfs-size.xml、mapred-site.xml等從Hadoop1.0繼承來的配置文件和yarn-size.xml等Hadoop2.0新增的配置文件
include: 對外提供的編程庫頭文件(具體動態(tài)庫和靜態(tài)庫在lib目錄中),這些頭文件均是用c++定義的,通常用于c++程序訪問HDFS或者編寫MapReduce程序
lib: 該目錄包含了Hadoop對外提供的編程動態(tài)庫和靜態(tài)庫,與include目錄中的頭文件結合使用
libexec: 各個服務對用的shell配置文件所有的目錄,可用于配置日志輸出、啟動參數(比如JVM參數)等基本信息
sbin: Hadoop管理腳本所在的目錄,主要包含HDFS和YARN中各類服務的啟動/關閉腳本
share: Hadoop各個模塊編譯后的jar包所在的目錄
7.Hadoop配置文件修改
Hadoop安裝主要就是配置文件的修改,一般在主節(jié)點進行修改,完畢后scp下發(fā)給其他各個從節(jié)點機器
進入文件夾
cd /root/apps/hadoop-2.8.5/etc
7.1.hadoop-env.sh
文件中設置的是Hadoop運行時需要的環(huán)境變量。JAVA_HOME是必須設置的,即使我們當前的系統(tǒng)中設置了JAVA_HOME,它也是不認識的,因為Hadoop即使是在本機上執(zhí)行,它也是當前的執(zhí)行環(huán)境當成遠程服務器
vim hadoop-env.sh
export JAVA_HOME=/root/apps/jdk1.8.0_211
7.2.core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://node-1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/apps/hadoop-2.8.5/tmp</value>
</property>
7.3.hdfs-site.xml
<!-- 指定HDFS副本的數量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node-2:50090</value>
</property>
7.4.mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!-- 指定mr運行時框架,這里指定在yarn上,默認是local -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
7.5.yarn-site.xml
<!-- 指定 YARN 的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node-1</value>
</property>
<!-- NodeManager上運行的附屬服務。需要配置成mapreduce_shuffle,才可運行MapReduce程序默認值-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
7.6.slaves文件,里面寫上主機名
vim slaves
node-1
node-2
node-3
7.7.將hadoop添加到環(huán)境變量
vim /etc/profile
export HADOOP_HOME=/root/apps/hadoop-2.8.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
7.8.下發(fā)配置
環(huán)境變量
scp /etc/profile node-2:/etc/
Hadoop文件
scp -r /root/apps/hadoop-2.8.5/ node-3:/root/apps
域名解析
scp /etc/hosts node-2:/etc/
*關于Hadoop的配置文件
***-default.xml 這里面配置了Hadoop默認的配置選項
如果用戶沒有更改,那么這里的選項將會生效
***-site.xml 這里配置了用戶需要自定義的配置選項
site中配置選項優(yōu)先級>Default中的,如果有配置的話,就會覆蓋默認的配置選項