hadoop集群环境搭建
linux: CentOS 7
hadoop版本: hadoop-2.8.5
JDK: jdk1.8.0_151
/etc/hosts
1. 192.168.159.129 master
2. 192.168.159.128 slaver
3. 192.168.159.130 slaver2
配置JDK环境
1.下载解压JDK,执行如下命令
yum install java-1.8.0-openjdk java-1.8.0openjdk-devel
2.配置JAVA_HOME环境变量,可以在~/.bashrc文件中进行设置,执行如下命令:
vi ~/.bashrc
在文件的最后添加如下代码(指向JDK的安装位置),内容如下:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
编辑结束后,按Esc键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。
3.使环境变量生效,执行如下命令:
source ~/.bashrc
4.设置好后来检验一下是否设置正确,执行如下命令:
echo $JAVA_HOME # 检验变量值
java -version
注意:需要对三台服务器都进行同样操作。(这里需要在三台主机上都执行上面的安装JDK的步骤,因为每台节点都必须要JDK
配置ssh免密码登录
1.CentOS 默认已安装了SSH client、SSH server,进入实验后点击Applications->Terminal Emulator 进入Linux操作界面进行命令操作。执行如下命令:
rpm -qa | grep ssh
如果结果中包含了SSH client和SSH server,则不需要再安装。
若需要安装,也可以进行安装(安装过程中会提示输入 [y/n],输入y即可),执行如下命令:
yum install openssh-clients
yum install openssh-server
安装好后,测试SSH 是否可用(注意该地址为目标机器IP地址:另外两节点地址),执行如下命令:
ssh 192.168.159.129
按照提示输入密码(111111),登录服务器
连接完成后,证明ssh命令可用,然后需要返回到最初的主机,执行如下命令:
exit
2.生成密钥,并将密钥加入到授权中,由于要反复确认路径,所以后续也是直接按Enter键,执行如下命令:
ssh-keygen
在虚拟机的/headless目录下创建 .ssh文件,执行如下命令:
cd /headless
mkdir .ssh
注:各节点进行免密登录步骤如下:
在全部节点上,执行上述步骤(1)到(3),执行完毕后,进入master节点执行步骤(4)。
4.通过命令的方式将密码发送到节点,执行如下命令(目标机器IP地址):
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.159.128
注:在Master节点上对所有节点进行免密登录操作(包括master节点),到此免密就已经完成。
安装hadoop
- 进入~/download目录
- 下载hadoop-2.8.3.tar.gz(如果无法连接外网,本镜像提供了2.8.3版本的安装包,在~/download目录下。本实验中两者没有区别都可以使用),解压到/usr/local目录中执行如下命令(解压,注意文件名的版本)
tar -zxvf hadoop-2.8.5.tar.gz -C /usr/local
- 解压完之后进入/usr/local目录,修改解压hadoop包后的文件名(将文件夹名改为hadoop,注意文件名的版本)
- 改完后进入到hadoop目录中
集群配置
修改自己所用节点的IP映射,执行如下命令:
vi /etc/hosts
在/etc/hosts文件中输入映射关系即可(一般该文件中只有一个127.0.0.1,其对应名为 localhost,不要有Master之类的主机名称):
编辑完成后,按Esc键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。
注意:三台节点都要配置相同的内容。
配置环境变量
执行如下命令:
vi ~/.bashrc
按i进入编辑模式,把hadoop的环境变量添加进去,执行如下命令:
export HADOOP_HOME=/usr/local/hadoop/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
编辑完成后,按Esc键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。
让环境变量生效,执行如下命令:
source ~/.bashrc
注意:三台节点都要配置相同的内容。
修改配置文件
进入配置文件所在的路径,执行如下命令:
cd /usr/local/hadoop/etc/hadoop
(1)slaves
让Master节点仅作为NameNode使用。
编辑slaves文件,执行如下命令:
vi slaves
按i进入编辑模式编辑内容,将文件中原来的 localhost 删除,并添加两行内容,
编辑完成后,按Esc键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。
(2)core-site.xml
文件core-site.xml 改为下面的配置,执行如下命令:
vi core-site.xml
按i进入编辑模式,在 之间添加配置内容,内容如下:
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
编辑完成后,按Esc键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。
(3)hdfs-site.xml
文件hdfs-site.xml 改为下面的配置,执行如下命令:
vi hdfs-site.xml
进入编辑模式,在 之间添加下面的配置内容:
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
编辑完成后,按Esc键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。
(4)mapred-site.xml
对文件mapred-site.xml重命名,默认文件名为mapred-site.xml.template,并更改mapred-site.xml配置,执行如下命令:
mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
按i键进入编辑模式,在 之间添加下面的配置内容:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
编辑完成后,按Esc键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。
注意:这里指定MR运行框架为Yarn。
(5)yarn-site.xml
更改yarn-site.xml配置,执行如下命令:
vi yarn-site.xml
按i键进入编辑模式,在 之间添加下面的配置内容:
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
编辑完成后,按Esc键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。
配置完成后,将Master上的/usr/local/hadoop文件夹复制到各个节点上。执行如下命令(这里使用主机名,如果主机名过于复杂,可以直接将主机名替换成ip):
scp -r /usr/local/hadoop root@Slaver:/usr/local/
scp -r /usr/local/hadoop root@Slaver2:/usr/local/
注意:对于最后一步的建议,由于Docker镜像每次关机重启,所以可能出现主机名和IP映射不成功的情况,所以建议使用IP。
Hadoop集群手动启动
进入Hadoop的安装目录,格式化NameNode。Hadoop启动前必须先格式化NameNode(在Master执行)。执行如下命令:
/usr/local/hadoop/bin/hdfs namenode -format
(2)启动NameNode(在Master节点),执行如下命令:
/usr/local/hadoop/sbin/hadoop-daemon.sh start namenode
(3)启动DataNode(在两台Slave节点),执行如下命令:
/usr/local/hadoop/sbin/hadoop-daemon.sh start datanode
(4)启动SecondaryNameNode(在任意节点),执行如下命令:
/usr/local/hadoop/sbin/hadoop-daemon.sh start secondarynamenode
(5)启动ResourceManager(在Master节点),执行如下命令:
/usr/local/hadoop/sbin/yarn-daemon.sh start resourcemanager
(6)启动NodeManager(在两台Slave节点),执行如下命令:
/usr/local/hadoop/sbin/yarn-daemon.sh start nodemanager
(7)使用jps命令查看是否已经启动成功,各节点有不同的进程。
访问master WEB UI界面,可以看另外2个节点都正常运行。
http://master:50070/