## 准备工作
(本操作环境CentOS6.5,centos7部分命令不同):
1、 配置主机名
Master 节点: master
Slave 节点: slave1
Slave 节点: slave2
自定义主机名:#vi /etc/sysconfig/network
NETWORKING=yes #启动网络
HOSTNAME=master #主机名
centos7永久性的修改主机名称,重启后能保持修改后的:
```
hostnamectl set-hostname xxx
```
#hostname master
**Slave 节点,操作同上,改成对应主机名称**
2、 配置 hosts文件
#vi /etc/hosts
192.168.6.250 master
192.168.6.251 slave1
192.168.6.252 slave2
*拷贝/etc目录下hosts文件到slaves
scp -r /etc/hosts slave1:/etc/
scp -r /etc/hosts slave2:/etc/
*通信保证测试:除slave1 其它机器通过ping slave1 命令测试 ctrl+c结束
同理,除本身用其他机器测试ping slave2 ……..
3、 关闭防火墙(三台)
> #service iptables status
> #service iptables stop
> #chkconfig iptables off
关闭防护
> #vi /etc/selinux/config
**SELINUX=disabled**
4、 时间同步:
服务器集群强调协调性,要保持步调一致所以需要进行时间同步
(服务器的内部时钟每天也会有很大的误差)
> #yum install -y ntpdate.x86_64
> #crontab -e
` 0(空格)1(空格)*(空格)*(空格)*(空格)/usr/sbin/ntpdate 1.cn.pool.ntp.org`
> #/usr/sbin/ntpdate 1.cn.pool.ntp.org
(2)
![](https://box.kancloud.cn/43ef77f6ac79643afbbd60dc353cba6f_638x370.png)
vi /etc/ntp.conf
![](https://box.kancloud.cn/fcb3556386a28379717b1a8aeb0bb954_626x587.png)![](https://box.kancloud.cn/5f39344f8415cca4fba0aacf91192e4e_655x51.png)
另外两台从节点其他配置不变只需要将server后的IP改为主节点IP
5、 免密钥登录
该部分操作要在自定义用户目录下操作
#useradd hadoop
#passwd hadoop
#su hadoop
[hadoop@master root]$cd
[hadoop@master ~]$ssh-keygen -t rsa
(一直回车,直到出现一个图形)
[hadoop@master ~]$cd .ssh
[hadoop@master .ssh]$ cat id_rsa.pub >> authorized_keys
[hadoop@master .ssh]$chmod 600 authorized_keys
****以上操作在所有机器上做*******
Master分发密钥:
[hadoop@master .ssh]$ scp authorized_keys hadoop@slave1:~/.ssh
[hadoop@master .ssh]$ scp authorized_keys hadoop@slave2:~/.ssh
*测试:#ssh slave1
#exit
6、 安装 JDK (master和slave都需要)
一定要先删除 原有的jdk
`#yum remove java-1.*`
建立文件夹:mkdir /usr/java
上传jdk软件包jdk-8u131-linux-x64.tar.gz到/usr/java
[root@master ~]$ tar -xvf /usr/java/jdk-8u131-linux-x64.tar.gz (会安装到/usr/java)
再赋予权限 #chmod +x /usr/java/jdk1.8.0_131/bin/*
jdk安装目录
[hadoop@master ~]$cd /usr/java/jdk1.8.0_131
[hadoop@master jdk1.8.0_131 ]$pwd
/usr/java/jdk1.8.0_131
配置环境变量:
$cd
$vi .bash_profile
export JAVA_HOME=/usr/java/jdk1.8.0_131
export PATH=$PATH:$JAVA_HOME/bin
[hadoop@master ~]$source .bash_profile
[hadoop@master ~]$ java -version
复制到其它机器:
[hadoop@master ~]$ scp .bash_profile hadoop@slave1:~/ (slave2)
[root@master #]$ scp -r /usr/java root@slave1:/usr/ (slave2)
在其他机器上:#cd
. .bash_profile
`#java –version`
Hadoop安装配置
(推荐使用最新的Hadoop版本,本版本仅供参考)
全部在hadoop用户下操作
1、 新建software文件夹mkdir /home/hadoop/software
2、 上传hadoop包hadoop-2.7.3.tar.gz到/home/hadoop/software
[hadoop@master software]$cp /mnt/hgfs/共享文件夹名称/hadoop-2.7.3.tar.gz /home/hadoop/software
3、 解压:
[hadoop@master ~]$cd /home/hadoop/software
[hadoop@master ~]$tar -xzvf hadoop-2.7.3.tar.gz
4、 修改配置文件
![](https://box.kancloud.cn/d2a891533398fb38bd6da6afed801d6d_433x415.png)
[hadoop@master ~]$cd /home/hadoop/software/hadoop-2.7.3/etc/hadoop
修改 hadoop-env.sh
[hadoop@master hadoop]$vi hadoop-env.sh
在文件靠前的部分找到:export JAVA_HOME=${JAVA_HOME}
改为:export JAVA_HOME=/usr/java/jdk1.8.0_131(java安装路径)
修改 yarn-env.sh
找到:# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
改为:export JAVA_HOME=/usr/java/jdk1.8.0_131
```
#
修改项前边该符号去掉!!!
```
修改 core-site.xml
~~~
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/software/hadoopdata</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>
~~~
注:
![](https://box.kancloud.cn/cacbb9e0428aeda6c29705bb08361860_554x308.png)
修改 hdfs-site.xml
~~~
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
~~~
注:
![](https://box.kancloud.cn/1c2a395a51001785fe06250622f44596_554x474.png)
修改 yarn-site.xml
~~~
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
</configuration>
~~~
注:
![](https://box.kancloud.cn/e2fb9f1a49593bf062bce640f7e5b4d1_508x670.png)
修改 mapred-site.xml
1.cp mapred-site.xml.template mapred-site.xml
2.vi mapred-site.xml
<!—指定运行 mapreduce 的环境是yarn-->
~~~
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
~~~
注:
![](https://box.kancloud.cn/8e38a29a484f34617a7ebe066f41753e_554x361.png)
vi slaves
文件删除,添加:
~~~
slave1
slave2
~~~
5、 复制到从节点
使用下面的命令将已经配置完成的 Hadoop 复制到从节点 Hadoop Slave 上:
[hadoop@master hadoop-2.7.3]$ cd /home/hadoop/software
[hadoop@master software]$ scp -r hadoop-2.7.3 slave1:/home/hadoop/software/
[hadoop@master software]$ scp -r hadoop-2.7.3slave2:/home/hadoop/software/
注意:因为之前已经配置了免密钥登录,这里可以直接远程复制。
6、 启动 Hadoop 集群
- 配置 Hadoop 启动的系统环境变量
[hadoop@master ~]$vi .bash_profile
将下面的代码追加到.bashrc 末尾:
export HADOOP_HOME=/home/hadoop/software/hadoop-2.7.3
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
然后执行命令:
[hadoop@master ~]$ source .bash_profile
启动hadoop集群
1、 创建数据目录
该节的配置需要同时在HadoopMaster 和 HadoopSlave上分别进行操作。
在 hadoop的用户主目录下,创建数据目录,命令如下:
[hadoop@master ~]$ mkdir /home/hadoop/software/hadoopdata
[hadoop@salve1 ~]$ mkdir /home/hadoop/software/hadoopdata
[hadoop@slave2 ~]$ mkdir /home/hadoop/software/hadoopdata
2、 格式化hdfs文件系统
[hadoop@master ~]$ hdfs namenode -format
3、 启动hadoop
[hadoop@master ~]$start-all.sh
[hadoop@master ~]$ jps
29657 SecondaryNameNode
29478 NameNode
29792 ResourceManager
30052 Jps
[hadoop@slave1 ~]$ jps
6872 Jps
6740 DataNode
6838 NodeManager
在 HadoopMaster 上启动 Firefox 浏览器,在浏览器地址栏中输入输入 http://master:50070/,(或master的IP),检查namenode 和 datanode 是否正常
在浏览器地址栏中输入输入http://master:18088/,检查 Yarn 是否正常。
**示例程序测试2
[root@ master tmp]# pwd
/tmp
[root@ master tmp]# vi wc01.txt
hello world
hello hadoop
hadoop hadoop hadoop
[hadoop@master ~]$hadoop fs -mkdir -p /tmp/wordcount/in
[hadoop@master ~]$hadoop fs -put /tmp/wc01.txt /tmp/wordcount/in
[hadoop@master ~]$hadoop jar software/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /tmp/wordcount/in /tmp/wordcount/out
查看结果:
[hadoop@master ~]$hdfs dfs -cat /tmp/wordcount/out/part-r-00000
16/09/03 02:22:58 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
hadoop 4
hello 2
world 1