知識要點(diǎn):
什么是Hadoop
運(yùn)行Hadoop先決條件
安裝配置Hadoop
什么是Hadoop(Hadoop技術(shù)分享版本:Apache Hadoop 2.8.5
)
Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)乘寒。用戶可以在不了解分布式底層細(xì)節(jié)的情況下望众,開發(fā)分布式程序。充分利用集群的威力進(jìn)行高速運(yùn)算和存儲。
Hadoop實(shí)現(xiàn)了一個分布式文件系統(tǒng)(Hadoop Distributed File System)烂翰,簡稱HDFS夯缺。HDFS有高容錯性的特點(diǎn),并且設(shè)計(jì)用來部署在低廉的(low-cost)硬件上甘耿;而且它提供高吞吐量(high throughput)來訪問應(yīng)用程序的數(shù)據(jù)踊兜,適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求棵里,可以以流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)润文。
Hadoop的框架最核心的設(shè)計(jì)就是:
- HDFS為海量的數(shù)據(jù)提供了存儲
- MapReduce則為海量的數(shù)據(jù)提供了計(jì)算
準(zhǔn)備環(huán)境
- Java Development Kit8(JDK8)
- CentOS7.4、虛擬機(jī)三臺(分布式)或者一臺虛擬機(jī)(單節(jié)點(diǎn))
硬件要求
16G或者16G+內(nèi)存殿怜,4核-8核CPU典蝌,200GB硬盤空間
先決條件(版本選擇)
HBase和Hadoop版本對應(yīng)
Hadoop版本 | HBase-1.2.x,HBase-1.3.x | HBase-1.4.x | HBase-1.5.x | HBase-2.0.x | HBase-2.1.x | HBase-2.2.x |
---|---|---|---|---|---|---|
Hadoop-2.4.x | 支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-2.5.x | 支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-2.6.0 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-2.6.1+ | 支持 | 不支持 | 不支持 | 支持 | 不支持 | 不支持 |
Hadoop-2.7.0 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-2.7.1+ | 支持 | 支持 | 不支持 | 支持支持 | 不支持 | |
Hadoop-2.8.[0-2] | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-2.8.[3-4] | 未測試 | 未測試 | 不支持 | 支持 | 支持 | 不支持 |
Hadoop-2.8.5+ | 未測試 | 未測試 | 支持 | 支持 | 支持 | 支持 |
Hadoop-2.9.[0-1] | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-2.9.2+ | 未測試 | 未測試 | 支持 | 未測試 | 未測試 | 支持 |
Hadoop-3.0.[0-2] | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-3.0.3+ | 不支持 | 不支持 | 不支持 | 支持 | 支持 | 不支持 |
Hadoop-3.1.0 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
Hadoop-3.1.1+ | 不支持 | 不支持 | 不支持 | 支持 | 支持 | 支持 |
HBase與JDK
HBase版本 | JDK 7 | JDK 8 | JDK 9 | JDK 10 | JDK 11 |
---|---|---|---|---|---|
2.0+ | 不支持 | 支持 | 未測試 | 未測試 | 未測試 |
1.2+ | 支持 | 支持 | 未測試 | 未測試 | 未測試 |
安裝配置Hadoop
Hadoop安裝步驟易記總結(jié):442陣型里有7個小矮人(只針對想自己安裝hadoop體驗(yàn)受虐過程的,如果使用CDH或其他商業(yè)發(fā)行版中集成的安裝工具头谜,可以略過此步驟)骏掀。該步驟同樣適用于其他版本的Apache Hadoop
下載和解壓
# 下載文件
$bin wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz
# 解壓文件
$bin tar xvzf hadoop-2.8.5.tar.gz
# 把解壓好的目錄移動到你的軟件目錄
$bin mv ./hadoop-2.8.5 /path/to/你的軟件目錄
Linux系統(tǒng)設(shè)置
- 創(chuàng)建用戶
$bin useradd hadoop
- 修改linux配置文件
192.168.56.105 master
192.168.56.107 docker01
192.168.56.109 docker02
修改/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=你的主機(jī)名
- 關(guān)閉防火墻
$bin systemctl stop firewalld.service
$bin systemctl disable firewalld.service
-
設(shè)置免密登錄
打開sshd服務(wù)
編輯/etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重啟sshd服務(wù)
$bin systemctl restart sshd.service
設(shè)置免密
$bin su hadoop
# 在master主機(jī)上生成RSA公私鑰對
$bin ssh-keygen -t rsa
# 到hadoop用戶的用戶目錄下的.ssh目錄
$bin cd ~/.ssh
# 生成authorized_keys文件
$bin cat id_rsa.pub >> authorized_keys
# 對authorized_keys文件進(jìn)行權(quán)限修復(fù)
$bin chmod 644 ./authorized_keys
# 分發(fā)authorized_keys到docker01 docker02
$bin ssh-copy-id hadoop@docker01
$bin ssh-copy-id hadoop@docker02
# 在主機(jī)上對免密登錄進(jìn)行測試,除第一外后面再登錄都不需要輸入登錄密碼
# master主機(jī)上免密登錄到docker01
$bin ssh docker01
# master主機(jī)上免密登錄到docker02
$bin shh docker02
Hadoop設(shè)置
- 設(shè)置目錄權(quán)限
$bin chown -R hadoop:hadoop /usr/local/bigdata/hadoop-2.8.5
- 準(zhǔn)備Hadoop數(shù)據(jù)目錄
$bin cd
$bin mkdir -p ./hdfs/name ./hdfs/data
- 修改Hadoop配置文件
配置文件目錄路徑:/path/to/hadoop-2.8.5/etc/hadoop
①hadoop-env.sh
②yarn-env.sh
③core-site.xml
④hdfs-site.xml
⑤mapred-site.xml
⑥yarn-site.xml
⑦slaves
hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_171
export HADOOP_PREFIX=/usr/local/bigdata/hadoop-2.8.5
yarn-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_171
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.home.dir</name>
<value>file:/usr/local/bigdata/hadoop-2.8.5</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hdfs</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.hosts</name>
<value>/usr/local/bigdata/hadoop-2.8.5/etc/hadoop/slaves</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<property>
<name>mapred.job.tracker.http.address</name>
<value>master:50030</value>
</property>
<property>
<name>mapred.task.tracker.http.address</name>
<value>master:50060</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
slaves
docker01
docker02
- 節(jié)點(diǎn)分發(fā)
$bin scp -r /usr/local/bigdata/hadoop-2.8.5 docker01:/usr/local/bigdata
$bin scp -r /usr/local/bigdata/hadoop-2.8.5 docker02:/usr/local/bigdata
驗(yàn)證
- 初始化Hadoop
對namenode進(jìn)行格式化(必須在主節(jié)點(diǎn)上進(jìn)行)
hdfs namenode -format
- 啟動服務(wù)
# 第一種啟動方式
$bin start-all.sh
# 第二種啟動方式
$bin start-dfs.sh
$bin start-yarn.sh
正常啟動有五個進(jìn)程:
NameNode
SecondaryNameNode
ResourceManager
NodeManager
DataNode
DFS WebUI地址:http://192.168.56.105:50090/
Yarn WebUI地址:http://192.168.56.105:8088/
頁面正常柱告,說明服務(wù)正常啟動截驮。可以進(jìn)行下一步驗(yàn)證际度,如執(zhí)行一條hdfs命令:
# 查看hdfs系統(tǒng)中的目錄或者文件
$bin hdfs dfs -ls /
注:大家學(xué)習(xí)的時候一定要對照好版本葵袭,并且如果自己練習(xí)的話,應(yīng)該與我的節(jié)點(diǎn)架構(gòu)是一樣的乖菱,這樣才能避免學(xué)習(xí)的時候遇到一些沒有必要的麻煩坡锡!