鏈接:http://www.reibang.com/p/0d4a365ef350
第一部分:Linux環(huán)境安裝
Hadoop是運行在Linux,雖然借助工具也可以運行在Windows上秩霍,但是建議還是運行在Linux系統(tǒng)上,第一部分介紹Linux環(huán)境的安裝、配置采郎、Java JDK安裝等苔悦。
第二部分:Hadoop本地模式安裝
Hadoop 本地模式只是用于本地開發(fā)調(diào)試净嘀,或者快速安裝體驗 Hadoop,這部分做簡單的介紹摔竿。
第三部分:Hadoop偽分布式模式安裝
學(xué)習(xí) Hadoop 一般是在偽分布式模式下進行面粮。這種模式是在一臺機器上各個進程上運行 Hadoop 的各個模塊,偽分布式的意思是雖然各個模塊是在各個進程上分開運行的继低,但是只是運行在一個操作系統(tǒng)上的熬苍,并不是真正的分布式。
第四部分:完全分布式安裝
完全分布式模式才是生產(chǎn)環(huán)境采用的模式袁翁,Hadoop 運行在服務(wù)器集群上柴底,生產(chǎn)環(huán)境一般都會做HA,以實現(xiàn)高可用粱胜。
第五部分:Hadoop HA安裝
HA是指高可用柄驻,為了解決Hadoop單點故障問題,生產(chǎn)環(huán)境一般都做HA部署焙压。這部分介紹了如何配置Hadoop2.x的高可用鸿脓,并簡單介紹了HA的工作原理。
第一部分 :Linux環(huán)境安裝
1. 服務(wù)器規(guī)劃
hostname | ip | name |
---|---|---|
bigdata-senior01 | 192.168.0.101 | CentOSSerer01 |
bigdata-senior02 | 192.168.0.102 | CentOSSerer02 |
bigdata-senior03 | 192.168.0.103 | CentOSMYsqlDB_master |
2. 環(huán)境配置
一涯曲、修改 Hostname
- 臨時修改 hostname
[root@localhost Desktop]# hostname bigdata-senior01.chybinmy.com
這種修改方式野哭,系統(tǒng)重啟后就會失效。
- 永久修改 hostname
想永久修改幻件,應(yīng)該修改配置文件 /etc/sysconfig/network拨黔。
命令:[root@bigdata-senior01 ~] vim /etc/sysconfig/network
打開文件后,
NETWORKING=yes #使用網(wǎng)絡(luò)
HOSTNAME=bigdata-senior01.chybinmy.com #設(shè)置主機名
二绰沥、配置Host
命令:[root@bigdata-senior01 ~] vim /etc/hosts
添加hosts: 192.168.0.101 bigdata-senior01
三篱蝇、關(guān)閉防火墻
四、關(guān)閉selinux
selinux是Linux一個子安全機制徽曲,學(xué)習(xí)環(huán)境可以將它禁用零截。
sudo vim /etc/sysconfig/selinux
五、安裝JDK
- 刪除centos自帶的openjdk
[wj@master hadoop]$ rpm -qa | grep java
java-1.7.0-openjdk-1.7.0.191-2.6.15.5.el7.x86_64
python-javapackages-3.4.1-11.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
tzdata-java-2018e-3.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
[root@master ~]# rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarch
[root@master ~]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64
[root@master ~]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
[root@master ~]# rpm -e --nodeps tzdata-java-2018e-3.el7.noarch
[root@master ~]# rpm -e --nodeps javapackages-tools-3.4.1-11.el7.noarch
[root@master ~]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
安裝參考http://www.reibang.com/p/a30b42bbfc09
第二部分:Hadoop安裝
一秃臣、 Hadoop 所用的用戶設(shè)置
1. 創(chuàng)建一個名字為 hadoop 的普通用戶
2. 給 hadoop 用戶 sudo 權(quán)限
設(shè)置權(quán)限瞻润,學(xué)習(xí)環(huán)境可以將 hadoop 用戶的權(quán)限設(shè)置的大一些,但是生產(chǎn)環(huán)境一定要注意普通用戶的權(quán)限限制甜刻。
注意:如果root用戶無權(quán)修改sudoers文件绍撞,先手動為root用戶添加寫權(quán)限。
3. 切換到hadoop用戶
<pre>
[root@bigdata-senior01 ~]# su - hadoop[hadoop@bigdata-senior01 ~]$
</pre>
4. 創(chuàng)建存放hadoop文件的目錄
- 將hadoop文件夾的所有者指定為hadoop用戶
如果存放hadoop的目錄的所有者不是hadoop得院,之后hadoop運行中可能會有權(quán)限問題傻铣,那么就講所有者改為hadoop。
二祥绞、
解壓Hadoop目錄文件
1. 復(fù)制 hadoop-2.5.0.tar.gz 到/opt/modules目錄下非洲。
- 解壓 hadoop-2.5.0.tar.gz
十五鸭限、配置 Hadoop
1. 配置 Hadoop 環(huán)境變量
追加配置:
export HADOOP_HOME="/opt/modules/hadoop-2.10.0"
export PATH=$HADDOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
執(zhí)行:source /etc/profile 使得配置生效
驗證 HADOOP_HOME 參數(shù):
- 配置 hadoop-env.sh、mapred-env.sh两踏、yarn-env.sh 文件的 JAVA_HOME參數(shù)
3. 配置 core-site.xml
[hadoop@bigdata-senior01 ~]{HADOOP_HOME}/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata-senior01:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>
</property>
</configuration>
(1) fs.defaultFS 參數(shù)配置的是HDFS的地址败京。
(2) hadoop.tmp.dir
配置的是Hadoop臨時目錄,比如HDFS的NameNode數(shù)據(jù)默認都存放這個目錄下梦染,查看*-default.xml
等默認配置文件赡麦,就可以看到很多依賴${hadoop.tmp.dir}
的配置。
默認的hadoop.tmp.dir
是/tmp/hadoop-${user.name}
,此時有個問題就是 NameNode 會將 HDFS 的元數(shù)據(jù)存儲在這個/tmp目錄下帕识,如果操作系統(tǒng)重啟了泛粹,系統(tǒng)會清空 /tmp 目錄下的東西,導(dǎo)致NameNode元數(shù)據(jù)丟失肮疗,是個非常嚴重的問題晶姊,所有我們應(yīng)該修改這個路徑。
- 創(chuàng)建臨時目錄:
- 將臨時目錄的所有者修改為 hadoop
- 修改 hadoop.tmp.dir
十六伪货、配置们衙、格式化、啟動 HDFS
1. 配置 hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>bigdata-senior01:9000</value>
</property>
</configuration>
dfs.replication 配置的是 HDFS存 儲時的備份數(shù)量碱呼,因為這里是偽分布式環(huán)境只有一個節(jié)點蒙挑,所以這里設(shè)置為1。
2. 格式化 HDFS
格式化是對 HDFS 這個分布式文件系統(tǒng)中的 DataNode 進行分塊巍举,統(tǒng)計所有分塊后的初始元數(shù)據(jù)的存儲在 NameNode 中。
格式化后凝垛,查看 core-site.xml 里 hadoop.tmp.dir(本例是 /opt/data 目錄)指定的目錄下是否有了 dfs 目錄懊悯,如果有,說明格式化成功梦皮。
注意:
格式化時炭分,這里注意 hadoop.tmp.dir 目錄的權(quán)限問題,應(yīng)該 hadoop 普通用戶有讀寫權(quán)限才行剑肯,可以將 /opt/data 的所有者改為 hadoop捧毛。
[hadoop@bigdata-senior01 hadoop-2.5.0]$ sudo chown -R hadoop:hadoop /opt/data查看 NameNode 格式化后的目錄。
fsimage 是 NameNode 元數(shù)據(jù)在內(nèi)存滿了后让网,持久化保存到的文件呀忧。
fsimage*.md5
是校驗文件,用于校驗 fsimage 的完整性溃睹。
seen_txid
是 hadoop 的版本
vession 文件里保存:
namespaceID:NameNode 的唯一 ID而账。
clusterID:集群 ID,NameNode 和 DataNode 的集群 ID 應(yīng)該一致因篇,表明是一個集群泞辐。
3. 啟動 NameNode
4. 啟動 DataNode
5. 啟動 SecondaryNameNode
- JPS 命令查看是否已經(jīng)啟動成功笔横,有結(jié)果就是啟動成功了。
7. HDFS 上測試創(chuàng)建目錄咐吼、上傳吹缔、下載文件
HDFS 上創(chuàng)建目錄
上傳本地文件到 HDFS 上
讀取 HDFS 上的文件內(nèi)容
從 HDFS上 下載文件到本地
[hadoop@bigdata-senior01 hadoop-2.5.0]$ bin/hdfs dfs -get /demo1/core-site.xml
十七、配置锯茄、啟動YARN
1. 配置mapred-site.xml
默認沒有mapred-site.xml文件厢塘,但是有個mapred-site.xml.template配置模板文件。復(fù)制模板生成mapred-site.xml撇吞。
添加配置如下:
指定 mapreduce 運行在 yarn 框架上俗冻。
<configuration>
<property>
<name>mapreduce.framwork.name</name>
<value>yarn</value>
</property>
</configuration>
2. 配置 yarn-site.xml
添加配置如下:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata-senior01</value>
</property>
</configuration>
yarn.nodemanager.aux-services 配置了 yarn 的默認混洗方式,選擇為 mapreduce 的默認混洗算法牍颈。
yarn.resourcemanager.hostname 指定了 Resourcemanager 運行在哪個節(jié)點上迄薄。
3. 啟動 Resourcemanager
4. 啟動 nodemanager
5. 查看是否啟動成功
可以看到 ResourceManager、NodeManager 已經(jīng)啟動成功了煮岁。
6. YARN 的 Web 頁面
YARN 的 Web 客戶端端口號是 8088讥蔽,通過 http://192.168.100.10:8088/ 可以查看。
八画机、運行 MapReduce Job
在 Hadoop 的 share 目錄里冶伞,自帶了一些 jar 包,里面帶有一些 mapreduce 實例小例子步氏,位置在 share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar响禽,可以運行這些例子體驗剛搭建好的Hadoop平臺,我們這里來運行最經(jīng)典的 WordCount 實例荚醒。
1. 創(chuàng)建測試用的 Input 文件
創(chuàng)建輸入目錄:
./bin/hdfs dfs -mkdir -p /wordcountdemo/input
創(chuàng)建原始文件:
在本地 /opt/data 目錄創(chuàng)建一個文件 wc.input芋类,內(nèi)容如下。
hadoop mapreduce hive
hbase spark hadoop
hive spart
將 wc.input 文件上傳到 HDFS 的 /wordcountdemo/input 目錄中:
[hadoop@bigdata-senior01 hadoop-2.10.0]$ ./bin/hdfs dfs -put /opt/data/wc.input /wordcountdemo/input
2. 運行 WordCount MapReduce Job
[hadoop@bigdata-senior01 hadoop-2.10.0]$ ./bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar wordcount /wordcountdemo/input /wordcountdemo/output
- 查看輸出結(jié)果目錄
./bin/hdfs dfs -ls /wordcountdemo/output
[hadoop@bigdata-senior01 hadoop-2.10.0]$ ./bin/hdfs dfs -ls /wordcountdemo/output1
Found 2 items
-rw-r--r-- 1 hadoop supergroup 0 2020-06-17 15:47 /wordcountdemo/output1/_SUCCESS
-rw-r--r-- 1 hadoop supergroup 52 2020-06-17 15:47 /wordcountdemo/output1/part-r-00000
output 目錄中有兩個文件界阁,_SUCCESS 文件是空文件侯繁,有這個文件說明Job執(zhí)行成功。
part-r-00000文件是結(jié)果文件泡躯,其中-r-說明這個文件是 Reduce 階段產(chǎn)生的結(jié)果贮竟,mapreduce 程序執(zhí)行時,可以沒有 reduce 階段较剃,但是肯定會有 map 階段咕别,如果沒有 reduce 階段這個地方有是-m-。
一個 reduce 會產(chǎn)生一個 part-r- 開頭的文件写穴。
查看輸出文件內(nèi)容顷级。
[hadoop@bigdata-senior01 hadoop-2.10.0]$ ./bin/hdfs dfs -cat /wordcountdemo/output/part-r-00000
hadoop 2
hbase 1
hive 2
mapreduce 1
spark 1
spart 1
結(jié)果是按照鍵值排好序的。
十九确垫、停止 Hadoop
二十弓颈、 Hadoop 各個功能模塊的理解
- HDFS模塊
HDFS 負責(zé)大數(shù)據(jù)的存儲帽芽,通過將大文件分塊后進行分布式存儲方式,突破了服務(wù)器硬盤大小的限制翔冀,解決了單臺機器無法存儲大文件的問題导街,HDFS 是個相對獨立的模塊,可以為 YARN 提供服務(wù)纤子,也可以為 HBase 等其他模塊提供服務(wù)搬瑰。
- YARN 模塊
YARN 是一個通用的資源協(xié)同和任務(wù)調(diào)度框架,是為了解決 Hadoop1.x 中MapReduce 里 NameNode 負載太大和其他問題而創(chuàng)建的一個框架控硼。
YARN 是個通用框架泽论,不止可以運行 MapReduce,還可以運行Spark卡乾、Storm等其他計算框架翼悴。
- MapReduce 模塊
MapReduce 是一個計算框架,它給出了一種數(shù)據(jù)處理的方式幔妨,即通過 Map 階段鹦赎、Reduce階段來分布式地流式處理數(shù)據(jù)。它只適用于大數(shù)據(jù)的離線處理误堡,對實時性要求很高的應(yīng)用不適用古话。
第七步 開啟歷史服務(wù)
二十一、歷史服務(wù)介紹
Hadoop 開啟歷史服務(wù)可以在 web 頁面上查看 Yarn 上執(zhí)行 job 情況的詳細信息锁施∨悴龋可以通過歷史服務(wù)器查看已經(jīng)運行完的 Mapreduce 作業(yè)記錄,比如用了多少個 Map悉抵、用了多少個 Reduce肩狂、作業(yè)提交時間、作業(yè)啟動時間基跑、作業(yè)完成時間等信息婚温。
二十二描焰、開啟歷史服務(wù)
開啟后媳否,可以通過 Web 頁面查看歷史服務(wù)器:
http://bigdata-senior01.chybinmy.com:19888/
二十三、Web 查看 job 執(zhí)行歷史
1. 運行一個 mapreduce 任務(wù)
- job 執(zhí)行中
3. 查看 job 歷史
歷史服務(wù)器的 Web 端口默認是19888荆秦,可以查看Web界面篱竭。
但是在上面所顯示的某一個 Job 任務(wù)頁面的最下面,Map 和 Reduce 個數(shù)的鏈接上步绸,點擊進入 Map 的詳細信息頁面掺逼,再查看某一個 Map 或者 Reduce 的詳細日志是看不到的,是因為沒有開啟日志聚集服務(wù)瓤介。
二十四吕喘、開啟日志聚集
4. 日志聚集介紹
MapReduce是在各個機器上運行的赘那,在運行過程中產(chǎn)生的日志存在于各個機器上,為了能夠統(tǒng)一查看各個機器的運行日志氯质,將日志集中存放在HDFS上募舟,這個過程就是日志聚集。
- 開啟日志聚集
配置日志聚集功能:
Hadoop 默認是不啟用日志聚集的闻察。在 yarn-site.xml 文件里配置啟用日志聚集拱礁。
yarn.log-aggregation-enable:是否啟用日志聚集功能。
yarn.log-aggregation.retain-seconds:設(shè)置日志保留時間辕漂,單位是秒呢灶。
將配置文件分發(fā)到其他節(jié)點:
重啟 Yarn 進程:
重啟 HistoryServer 進程:
6. 測試日志聚集
運行一個 demo MapReduce,使之產(chǎn)生日志:
查看日志:
運行 Job 后钉嘹,就可以在歷史服務(wù)器 Web 頁面查看各個 Map 和 Reduce 的日志了鸯乃。