1.發(fā)行版本
?? Hadoop發(fā)行版本分為開源社區(qū)版和商業(yè)版,社區(qū)是指同Apache軟件基金會(huì)維護(hù)的版本,是官方維護(hù)的版本體系,是官方維護(hù)版本體系琉挖。商業(yè)版Hadoop是指由第三方商業(yè)公司在社區(qū)版Hadoop基礎(chǔ)上進(jìn)行了一些修改、整合以及各個(gè)服務(wù)組件兼容性測試面發(fā)行的版本涣脚,比較著名的cloudera的CDH示辈、mapR等
?? Hadoop的版本很特殊,是由多條分支并行的發(fā)展著遣蚀。大的來看分為3個(gè)大的系列版本:1.x矾麻、2.x纱耻、3.x。
?? Hadoop2.0則包含一個(gè)支持NameNode橫向擴(kuò)展的HDFS险耀,一個(gè)資源管理系統(tǒng)YARN和一個(gè)運(yùn)行在YARN上的離線計(jì)算框架MapReduce弄喘。當(dāng)前穩(wěn)定版本:Apache Hadoop 2.7.4
2.集群簡介
?? Hadoop集群具體來說包含兩個(gè)集群:HDFS集群和YARN集群,兩者邏輯上分離甩牺,但物理上常在一起蘑志。
?? HDFS集群負(fù)責(zé)海量數(shù)據(jù)的存儲(chǔ),集群中的角色主要有:
?? NameNode柴灯、DataNode、SecondaryNameNode
?? YARN集群負(fù)責(zé)海量數(shù)據(jù)運(yùn)算時(shí)的資源調(diào)度费尽,集群中的角色主要有:
?? ResourceManager赠群、NodeManager
?? MapReduce是一個(gè)分布式運(yùn)算編程框架,是應(yīng)用程序開發(fā)包旱幼,由用戶按照編程規(guī)范進(jìn)行程序開發(fā)查描,后打包運(yùn)行在HDFS集群上,并且受到Y(jié)ARN集群的資源調(diào)度管理
?? 集群模式主要用于生產(chǎn)環(huán)境部署柏卤。會(huì)使用N臺(tái)主機(jī)組成一個(gè)Hadoop集群冬三。 這種部署模式下,主節(jié)點(diǎn)和從節(jié)點(diǎn)分開部署在不同的機(jī)器上
?? 我以3個(gè)節(jié)點(diǎn)為例進(jìn)行搭建缘缚,角色分配如下:
服務(wù)器名 | 服務(wù)名 |
---|---|
node-01 | NameNode,DataNode, ResourceManager |
node-02 | DataNode蛇尚, NodeManager洒放, SecondaryNameNode |
node-03 | DataNode, NodeManager |
3.服務(wù)器準(zhǔn)備
VMware Workstation Pro 14
CentOS 7.4
4.服務(wù)器系統(tǒng)設(shè)置
-
同步時(shí)間
- 手動(dòng)同步時(shí)間
date -s "2019-04-30 10:00"
- 網(wǎng)絡(luò)同步時(shí)間
yum install ntpdate
?? # 安裝軟件
ntpdate cn.pool.ntp.org
- 手動(dòng)同步時(shí)間
設(shè)置主機(jī)名
hostname node-1
配置IP齐媒、主機(jī)名映射
vi /etc/hosts
-
配置ssh免密登陸
- 生成ssh免登陸密鑰
ssh-keygen -t rsa
(四個(gè)回車) - 執(zhí)行完這個(gè)命令后蒲每,會(huì)生成id_rsa(私鑰)、id_rsa.pub(公鑰)
- 將公鑰拷貝到要免密登陸的目標(biāo)機(jī)器上
ssh-copy-id node-2
- 生成ssh免登陸密鑰
-
配置防火墻
- 查看防火墻
systemctl status firewalld.service
- 關(guān)閉防火墻
systemctl stop firewalld.service
- 關(guān)閉防火墻開機(jī)啟動(dòng)
systemctl disable firewalld.service
- 查看防火墻
5.軟件安裝
下面安裝步驟中的所有安裝包可在“官網(wǎng)下載地址”下載喻括,也可以直接從網(wǎng)盤下載
網(wǎng)盤地址(提取碼:yeb1)
需要的安裝包
yum gcc gcc-c++ cmake openssl-devel ncurse-devel vim
如使用網(wǎng)盤內(nèi)的安裝包邀杏,并且系統(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安裝包并上傳
官網(wǎng)下載地址
- 解壓安裝包
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
官網(wǎng)下載地址
解壓:
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
驗(yàn)證:
protoc --version
-
Hadoop編譯安裝
選擇2.8.5 source下載
官網(wǎng)下載地址
解壓:
tar zxf hadoop-2.8.5-src.tar.gz
編譯
mvn package -DeskipTests -Pdist,native
或者
mvn package -DeskipTests -Pdist,native -Dtar
等待編譯完成望蜡,時(shí)間很長,可以喝個(gè)茶拷恨,打個(gè)游戲去
直到看到上面的內(nèi)容那就說明編譯完成了泣特。
cp -r hadoop-2.8.5-src/hadoop-dist/target/hadoop-2.8.5/ /root/apps/
6.Hadoop安裝包目錄結(jié)構(gòu)
bin: Hadoop最基本的管理腳本和使用腳本的目錄,這些腳本是sbin目錄下管理腳本的基礎(chǔ)實(shí)現(xiàn)挑随,用戶可以直接使用這些腳本管理和使用Hadoop状您。
etc: Hadoop配置文件所在的目錄勒叠,包括core-size.xml、hdfs-size.xml膏孟、mapred-site.xml等從Hadoop1.0繼承來的配置文件和yarn-size.xml等Hadoop2.0新增的配置文件
include: 對(duì)外提供的編程庫頭文件(具體動(dòng)態(tài)庫和靜態(tài)庫在lib目錄中)眯分,這些頭文件均是用c++定義的,通常用于c++程序訪問HDFS或者編寫MapReduce程序
lib: 該目錄包含了Hadoop對(duì)外提供的編程動(dòng)態(tài)庫和靜態(tài)庫柒桑,與include目錄中的頭文件結(jié)合使用
libexec: 各個(gè)服務(wù)對(duì)用的shell配置文件所有的目錄弊决,可用于配置日志輸出、啟動(dòng)參數(shù)(比如JVM參數(shù))等基本信息
sbin: Hadoop管理腳本所在的目錄魁淳,主要包含HDFS和YARN中各類服務(wù)的啟動(dòng)/關(guān)閉腳本
share: Hadoop各個(gè)模塊編譯后的jar包所在的目錄
7.Hadoop配置文件修改
Hadoop安裝主要就是配置文件的修改飘诗,一般在主節(jié)點(diǎn)進(jìn)行修改,完畢后scp下發(fā)給其他各個(gè)從節(jié)點(diǎn)機(jī)器
進(jìn)入文件夾
cd /root/apps/hadoop-2.8.5/etc
7.1.hadoop-env.sh
文件中設(shè)置的是Hadoop運(yùn)行時(shí)需要的環(huán)境變量界逛。JAVA_HOME是必須設(shè)置的昆稿,即使我們當(dāng)前的系統(tǒng)中設(shè)置了JAVA_HOME,它也是不認(rèn)識(shí)的,因?yàn)镠adoop即使是在本機(jī)上執(zhí)行息拜,它也是當(dāng)前的執(zhí)行環(huán)境當(dāng)成遠(yuǎn)程服務(wù)器
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副本的數(shù)量 -->
<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運(yùn)行時(shí)框架溉潭,這里指定在yarn上,默認(rèn)是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上運(yùn)行的附屬服務(wù)少欺。需要配置成mapreduce_shuffle喳瓣,才可運(yùn)行MapReduce程序默認(rèn)值-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
7.6.slaves文件,里面寫上主機(jī)名
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/
*關(guān)于Hadoop的配置文件
***-default.xml 這里面配置了Hadoop默認(rèn)的配置選項(xiàng)
如果用戶沒有更改赞别,那么這里的選項(xiàng)將會(huì)生效
***-site.xml 這里配置了用戶需要自定義的配置選項(xiàng)
site中配置選項(xiàng)優(yōu)先級(jí)>Default中的畏陕,如果有配置的話,就會(huì)覆蓋默認(rèn)的配置選項(xiàng)