1 場景
1.1 目的
centos7環(huán)境下安裝分布式hadoop。hadoop版本:2.7.1。
1.2 準(zhǔn)備工作
(1)操作系統(tǒng)版本
centos7.3.1611
(2)服務(wù)器主從
192.168.1.11 master
192.168.1.12 slave1
192.168.1.13 slave2
主從部署,參見文章:http://m.itdecent.cn/p/4c145367208b
(3)JDK版本
JDK版本:1.8
JDK1.8安裝,參見文章:http://m.itdecent.cn/p/0b9467edf04d
(4)創(chuàng)建相關(guān)目錄
主節(jié)點(diǎn)和從節(jié)點(diǎn),均需創(chuàng)建如下目錄:
hadoop程序目錄:
mkdir /usr/local/dsj
hadoop數(shù)據(jù)目錄:
mkdir /home/hadoop/hadoop
mkdir /home/hadoop/hadoop/data
mkdir /home/hadoop/hadoop/name
mkdir /home/hadoop/hadoop/tmp
2 安裝master
總體順序是,先將master節(jié)點(diǎn)安裝配置好,然后將對應(yīng)的文件拷貝到從節(jié)點(diǎn)服務(wù)器(slave1/slave2)。
以下均在主節(jié)點(diǎn)服務(wù)器上操作。
2.1 下載解壓
下載地址:
https://archive.apache.org/dist/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz
下載后,解壓到目錄/usr/local/dsj/hadoop-2.7.1(此目錄為安裝目錄):
tar -zxvf hadoop-2.7.1.tar.gz -C /usr/local/dsj
2.2 配置環(huán)境變量
(1)打開配置文件
vi /etc/profile
(2)文件末尾增加配置
export HADOOP_HOME=/usr/local/dsj/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
(2)讓配置生效
source /etc/profile
2.3 hdfs配置
(1)更改核心配置文件
vi /usr/local/dsj/hadoop-2.7.1/etc/hadoop/core-site.xml
增加如下配置:
<!-- hdfs通信地址 -->
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<!-- hadoop運(yùn)行時產(chǎn)生文件的存儲路徑 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/tmp</value>
</property>
(2)修改hdfs配置文件
vi /usr/local/dsj/hadoop-2.7.1/etc/hadoop/hdfs-site.xml
添加如下內(nèi)容:
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hadoop/name</value>
<description>namenode上存儲hdfs名字空間元數(shù)據(jù) </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop/data</value>
<description>datanode上數(shù)據(jù)塊的物理存儲位置</description>
</property>
<!-- 設(shè)置hdfs副本數(shù)量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.http.address</name>
<value>master:50070</value>
</property>
(3)修改hadoop-env.sh
vi /usr/local/dsj/hadoop-2.7.1/etc/hadoop/hadoop-env.sh
原配置:export JAVA_HOME=${JAVA_HOME}
更改為JDK絕對路徑:
export JAVA_HOME=/usr/local/dsj/jdk1.8.0_121
2.4 yarn配置
(1)配置mapred-site.xml
復(fù)制配置文件:
cd /usr/local/dsj/hadoop-2.7.1/etc/hadoop
cp mapred-site.xml.template mapred-site.xml
打開配置文件:
vi /usr/local/dsj/hadoop-2.7.1/etc/hadoop/mapred-site.xml
文件中增加配置:
<!-- 通知框架MR使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(2)配置yarn-site.xml
打開配置文件:
vi /usr/local/dsj/hadoop-2.7.1/etc/hadoop/yarn-site.xml
增加如下配置:
<!-- reducer取數(shù)據(jù)的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--RM的hostname-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
2.5 配置從節(jié)點(diǎn)
vi /usr/local/dsj/hadoop-2.7.1/etc/hadoop/slaves
更改配置如下:
slave1
slave2
2.6 拷貝主節(jié)點(diǎn)文件到從節(jié)點(diǎn)
(1)主節(jié)點(diǎn)拷貝hadoop文件到從節(jié)點(diǎn)
scp -r /usr/local/dsj/hadoop-2.7.1/ slave1:/usr/local/dsj/
scp -r /usr/local/dsj/hadoop-2.7.1/ slave2:/usr/local/dsj/
(2)主節(jié)點(diǎn)拷貝環(huán)境變量到從節(jié)點(diǎn)
scp /etc/profile slave1:/etc/profile
scp /etc/profile slave2:/etc/profile
3 配置slaver
以下均在從節(jié)點(diǎn)服務(wù)器上操作。
在slave1、slave2節(jié)點(diǎn)上執(zhí)行如下操作,使從主節(jié)點(diǎn)拷貝到從節(jié)點(diǎn)上的環(huán)境變量生效:
source /etc/profile
4 格式化節(jié)點(diǎn)
master節(jié)點(diǎn)上執(zhí)行操作,格式化節(jié)點(diǎn):
/usr/local/dsj/hadoop-2.7.1/bin/hdfs namenode -format
5 測試
(1)啟動hdfs
start-dfs.sh
(2)啟動yarn
start-yarn.sh
6 優(yōu)化
(1)core-site.xml增加配置
<!-- 流文件的緩沖區(qū) 128K(默認(rèn)4K) -->
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
(2)hdfs-site.xml增加配置
<!-- 缺省文件塊大小128MB(默認(rèn)64M)-->
<property>
<name>dfs.block.size</name>
<value>134217728</value>
</property>
<!-- NameNode 節(jié)點(diǎn)上面為處理datanode節(jié)點(diǎn)來來氣的遠(yuǎn)程調(diào)用的服務(wù)線程數(shù)量(默認(rèn)10) -->
<property>
<name>dfs.namenode.handler.count</name>
<value>64</value>
</property>
(3)mapred-site.xml增加配置
<!-- Map任務(wù)的中間結(jié)果是否進(jìn)行壓縮,減少網(wǎng)絡(luò)帶寬壓力-->
<property>
<name>mapreduce.map.output.compress</name>
<value>true</value>
</property>
<!-- 壓縮方式 -->
<property>
<name>mapreduce.map.output.compress.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
<!-- map任務(wù)需要的內(nèi)存大小-->
<property>
<name>mapreduce.map.memory.mb</name>
<value>2048</value>
</property>
<!-- map任務(wù)需要的虛擬機(jī)核數(shù)(默認(rèn)1) -->
<property>
<name>mapreduce.map.cpu.vcores</name>
<value>1</value>
</property>
<!-- reduce需要的內(nèi)存大小-->
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2048</value>
</property>
<!-- reduce需要的內(nèi)存核數(shù)(默認(rèn)1) -->
<property>
<name>mapreduce.reduce.cpu.vcores</name>
<value>1</value>
</property>