一、所需环境和准备工作
1.三台服务器:master、slave1、slave2
修改每台服务器的hosts文件
[root@master ~]# vim /etc/hosts
添加内容:
192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
重启服务器,使修改生效。
2.每台服务器都需要安装jdk
在官网下载jdk安装包:jdk-8u172-linux-x64.tar.gz
解压:
[root@master ~]# tar -zxvf jdk-8u172-linux-x64.tar.gz
将解压后的文件夹移动到相应的路径,并添加环境变量:
[root@master ~]# mv jdk1.8.0_172 /home/java
[root@master ~]# vim /etc/profile
添加如下内容:
JAVA_HOME=/usr/local/java/jdk1.8.0_172
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
使修改生效:
[root@master ~]# source /etc/profile
检查是否安装成功:
[root@master ~]# java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
3.设置免密登录
在三个节点分别执行如下命令:
[root@master ~]# ssh-keygen -t rsa
不断的按回车键,生成id_rsa(私钥)和id_rsa.pub(公钥)。
将slave1和slave2节点的id_rsa.pub文件复制到master节点:
[root@master ~]# scp root@slave1:/root/.ssh/id_rsa.pub /root/.ssh/id_rsa.pub-slave1
[root@master ~]# scp root@slave2:/root/.ssh/id_rsa.pub /root/.ssh/id_rsa.pub-slave2
将三个id_rsa.pub文件内容合并到authorized_keys中:
[root@master ~]# cd .ssh
[root@master .ssh]# cat id_rsa.pub id_rsa.pub-slave1 id_rsa.pub-slave2 > authorized_keys
将master节点的authorized_keys文件复制到另外两个节点的.ssh文件夹下:
#在slave1节点
[root@slave1 ~]# scp root@master:/root/.ssh/authorized_keys /root/.ssh
#在slave2节点
[root@slave2 ~]# scp root@master:/root/.ssh/authorized_keys /root/.ssh
检查是否能够成功免密登录:在任意节点执行ssh master、ssh slave1、ssh slave2,都不需要输入密码。
二、安装hadoop集群
1.在官网下载安装包:https://hadoop.apache.org/releases.html
2.解压:
[root@master ~]# tar -zxvf hadoop-2.9.0.tar.gz -C /home
3.在/home/hadoop-2.9.0目录下,创建tmp和dfs两个文件夹,在dfs文件夹下创建name和data文件夹。
4.修改core-site.xml
[root@master hadoop-2.9.0]# cd etc/hadoop/
[root@master hadoop]# vim core-site.xml
<configuration>
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop-2.9.0/tmp</value>
</property>
</configuration>
5.修改hadoop-env.sh
修改为自己jdk的安装路径。
6.修改hdfs-site.xml
<configuration>
<!-- 设置namenode的http通讯地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<!-- 设置secondarynamenode的http通讯地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
<!-- 设置namenode存放的路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop-2.9.0/dfs/name</value>
</property>
<!-- 设置hdfs副本数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 设置datanode存放的路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop-2.9.0/dfs/data</value>
</property>
</configuration>
7.修改mapred-site.xml
<configuration>
<!-- 通知框架MR使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
8.修改yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 设置 resourcemanager 在哪个节点-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<!-- reducer取数据的方式是mapreduce_shuffle -->
<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>
</configuration>
9.修改slaves文件
master节点修改为:
slave1
slave2
slave1和slave2节点修改为:
localhost
10.添加环境变量
[root@master ~]# vim /etc/profile
添加内容:
#hadoop
export HADOOP_HOME=/home/hadoop-2.9.0
export PATH=$PATH:$HADOOP_HOME/bin
使修改内容生效:
[root@master ~]# source /etc/profile
11.格式化namenode:
在bin目录下执行
[root@master bin]# ./hdfs namenode -format
12.启动hadoop:
在sbin目录下
[root@master sbin]# sh start-all.sh