hadoop集群的安裝配置
簡(jiǎn)介
Apache?Hadoop?項(xiàng)目是一個(gè)可靠的,可擴(kuò)展的分布式計(jì)算的開(kāi)源軟件秽浇。
Apache Hadoop軟件庫(kù)是一個(gè)框架,允許使用簡(jiǎn)單的編程模型跨計(jì)算機(jī)群集分布式處理大型數(shù)據(jù)集。 它旨在從單臺(tái)服務(wù)器擴(kuò)展到數(shù)千臺(tái)機(jī)器句灌,每臺(tái)機(jī)器提供本地計(jì)算和存儲(chǔ)。 該庫(kù)本身不是依靠硬件來(lái)提供高可用性欠拾,而是設(shè)計(jì)用于在應(yīng)用層檢測(cè)和處理故障胰锌,從而在一組計(jì)算機(jī)之上提供高可用性服務(wù),每個(gè)計(jì)算機(jī)都可能出現(xiàn)故障藐窄。
該項(xiàng)目包括這些模塊:
- Hadoop Common:支持其他Hadoop模塊的常用實(shí)用程序
- Hadoop Distributed File System (HDFS?):提供對(duì)應(yīng)用程序數(shù)據(jù)的高吞吐量訪問(wèn)的分布式文件系統(tǒng)资昧。
- Hadoop YARN:作業(yè)調(diào)度和集群資源管理的框架。
- Hadoop MapReduce:一個(gè)用于并行處理大型數(shù)據(jù)集的基于YARN的系統(tǒng)荆忍。
安裝配置
1. 安裝jdk
集群中的每臺(tái)服務(wù)器都需要安裝jdk,步驟如下:
cd /opt
wget http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz
tar -zxvf jdk-8u151-linux-x64.tar.gz
sudo vim /etc/profile
接下來(lái)格带,在文件最后面添加jdk路徑,并保存退出:
#java
export JAVA_HOME=/opt/jdk1.8.0_144
export JRE_HOME=/opt/jdk1.8.0_144/jre
export CLASSPATH=$JAVA_HOME/lib
export PATH=:$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
最后是文件生效东揣,執(zhí)行命令:
source /etc/profile
查看版本践惑,命令:
java -version
2. 修改主機(jī)名及ip映射
集群中的每臺(tái)服務(wù)器都需要配置,步驟如下:
vim /etc/hosts
打開(kāi)文件后,添加或修改相應(yīng)的映射(ip 主機(jī)名)嘶卧,例如如下:
10.24.106.80 spark.datanode1
10.24.106.81 spark.datanode2
10.24.106.82 spark.namenode
vim /etc/hostname
打開(kāi)文件后尔觉,修改主機(jī)名,和/etc/hosts文件中相同芥吟。
最后需要重啟使其生效
3. 創(chuàng)建用戶
集群中的每臺(tái)服務(wù)器都需要?jiǎng)?chuàng)建,步驟如下:
命令如下:
useradd hadoop #創(chuàng)建用戶名為hadoop的用戶
passwd hadoop #為hadoop用戶設(shè)置密碼
接下來(lái)侦铜,為hadoop用戶賦予root權(quán)限,命令:
vim /etc/sudoers
在該文件中加入下面一行內(nèi)容,并保存退出(修改文件內(nèi)容需要更改文件的權(quán)限钟鸵,保存退出之后钉稍,需要把權(quán)限再次更改回去):
hadoop ALL=(ALL:ALL) ALL
最后使用hadoop用戶登錄系統(tǒng)
4. 主機(jī)之間通過(guò)ssh無(wú)密鑰登錄
集群中的每臺(tái)服務(wù)器都需要配置,步驟如下:
cd /home
下邊命令用于生成公鑰(id_rsa.pub)和私鑰(id_rsa),并鍵入下面命令后一直回車(chē)就可以了棺耍,密鑰在/home/.ssh目錄下贡未。
ssh-keygen -t rsa -P ''
cd .ssh
接下來(lái)把所有服務(wù)器生成的公鑰全部追加進(jìn)authorized_keys文件中,意思就是這個(gè)文件中有集群中所有服務(wù)器的公鑰蒙袍,該文件在.ssh目錄下俊卤,如沒(méi)有該文件可以自己創(chuàng)建一個(gè)。
最后把擁有集群中所有服務(wù)器的公鑰的這個(gè)文件通過(guò)scp命令遠(yuǎn)程復(fù)制到每臺(tái)服務(wù)器中,相當(dāng)于每臺(tái)服務(wù)器的authorized_keys文件中內(nèi)容相同害幅。
現(xiàn)在可以通過(guò)ssh免密碼來(lái)遠(yuǎn)程登錄其他服務(wù)器了(第一次需要消恍,后面在登陸就不需要了),例如:
ssh 10.24.106.80
5. 安裝hadoop
cd /opt
wget http://mirror.stjschools.org/public/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4-src.tar.gz
tar -zxvf hadoop-2.7.4-src.tar.gz
添加環(huán)境變量:
vim /etc/profile
在文件中追加下面內(nèi)容以现,并保存退出后狠怨,在使其文件生效约啊。
#hadoop
export PATH=${HADOOP_HOME}/bin:$PATH
export HADOOP_HOME=/opt/hadoop-2.7.4/
現(xiàn)在創(chuàng)建數(shù)據(jù)存放目錄:
可以先通過(guò)命令df -h 查看一下那個(gè)磁盤(pán)下空間比較多,就把數(shù)據(jù)放在相應(yīng)的目錄下佣赖,例如:
cd /home
mkdir -p hadoop/dfs/data
mkdir -p hadoop/dfs/name
mkdir -p hadoop/tmp
上面目錄用于存放數(shù)據(jù)需要大一點(diǎn)的空間恰矩。
cd hadoop-2.7.4
接下來(lái)進(jìn)入配置目錄,進(jìn)行相應(yīng)的配置:
cd etc/hadoop
1. 編輯hadoop-env.sh文件
找到 JAVA_HOME 改為 JDK 的安裝目錄,例如如下:
export JAVA_HOME=/opt/jdk1.8.0_144
2. 編輯slaves文件添加從服務(wù)器的主機(jī)名
例如如下(下面兩臺(tái)服務(wù)器為slaves):
spark.datanode1
spark.datanode2
3. 編輯core-site.xml文件
vim core-site.xml
添加如下內(nèi)容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://spark.namenode:9002</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
最后保存退出
配置解釋?zhuān)?第一個(gè)value值是<value>hdfs://你的主服務(wù)器的主機(jī)名:端口(默認(rèn)為9000茵汰,若該端口被占可以更換其他的)</value>
第二個(gè)value值是<value>序列文件中使用的讀/寫(xiě)緩沖區(qū)的大小(一般為131072)</value>
第三個(gè)value值是<value>file:/hadoop的臨時(shí)目錄(上面已經(jīng)提前創(chuàng)建了)</value>
4. 編輯hdfs-site.xml文件
vim hdfs-site.xml
添加如下內(nèi)容:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>spark.namenode:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
5. 編輯mapred-site.xml
首先復(fù)制mapred-site.xml.template文件,并命名為mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
添加以下內(nèi)容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>spark.namenode:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>spark.namenode:19888</value>
</property>
</configuration>
6. 編輯yarn-site.xml文件
vim yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>spark.namenode:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>spark.namenode:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>spark.namenode:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>spark.namenode:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>spark.namenode:8088</value>
</property>
</configuration>
所有配置已經(jīng)完成枢里。
接下來(lái),該hadoop-2.7.4文件夾分發(fā)給集群中的各個(gè)服務(wù)器蹂午,使用scp遠(yuǎn)程復(fù)制命令,例如:
scp -r hadoop-2.7.4 hadoop@spark.datanode1:/opt
scp -r hadoop-2.7.4 hadoop@spark.datanode2:/opt
首次啟動(dòng)HDFS時(shí)栏豺,必須格式化。 將一個(gè)新的分布式文件系統(tǒng)格式化為hdfs豆胸,在master上執(zhí)行如下命令:
cd hadoop-2.7.4
./bin/hadoop namenode -format
啟動(dòng)hadoop
./sbin/start-dfs.sh
./sbin/start-yarn.sh
./sbin/mr-jobhistory-daemon.sh start historyserver
查看進(jìn)程服務(wù)奥洼,命令如下:
jps
在master上可以看到
namenode
secondarynamenode
resourcemanager
在slaves上看到:
datanode
nodemanager
查看端口占用情況,命令如下:
netstat -tupln
最后訪問(wèn)web-ui頁(yè)面
namenode頁(yè)面
http://10.24.106.82:50070
resourcemanager頁(yè)面
http://10.24.106.82:8088
歷史任務(wù)界面
http://10.24.106.82.19888
END