Hadoop2 集群环境
集群环境
Windows下安装Vmware,用CentOS安装CentOS7 64bit虚拟机并克隆,共创建3台虚拟机,CentOS用户名root,密码123456。地址和机器名分别为:
IP | 主机名 |
---|---|
192.168.11.10 | master |
192.168.11.11 | slave1 |
192.168.11.12 | slave2 |
关闭防火墙
1, 关闭防火墙 彻底关闭CentOS上的防火墙需要经过以下两步。
1)关闭防火墙1
$ systemctl stop firewalld.service # 停止firewall
$ systemctl disable firewalld.service # 禁止firewall开机启动
2) 关闭防火墙2
$ vi /etc/sysconfig/selinux
SELINUX=disabled
然后输入以下命令彻底关闭selinux。
$ setenforce 0
修改防火墙配置文件后,最好重启下Linux操作系统。
安装 Hadoop
创建/soft文件夹,把hadoop-3.1.4.tar.gz 文件上传到/soft文件加下,把 hadoop-3.1.4.tar.gz解压缩到 /usr/local 下
tar -zxvf hadoop-3.1.4.tar.gz -C /usr/local
修改 hadoop-3.1.4 名称
cd /usr/local
mv hadoop-3.1.4/ hadoop
修改主机名
1,修改虚拟机(192.168.11.10)名称,使用以下命令
vi /etc/hostname
master
2,编辑hosts 网络映射
vi /etc/hosts
192.168.11.10 master
192.168.11.11 slave1
192.168.11.12 slave2
在192.168.11.11,192.168.11.12重复以上两步, 把192.168.11.11主机名设置为slave1,192.168.11.12主机名设置为 slave2。
安装SSH
master通过网络和slave互相访问,需要安装SSH,使master和slave互相访问时不必登录系统的密码
1, 安装SSH
yum install openssh*
继续输入以下命令
systemctl enable sshd
ssh localhost
2, SSH设置账户无密码登录
2.1 每台机器执行命令生成秘钥文件
ssh-keygen -t rsa
会在当前目录下生成 .ssh隐藏目录
cd .ssh
在.ssh目录下会发现 id_rsa, id_rsa.pub , 在hadoop每个节点都执行以上命令。
2.2,每个节点下的 .ssh目录下的 id_rsa.pub文件的内容都保存到 authorized_keys 文件下
cd .ssh
vi authorized_keys
添加 master,slave1,slave2下的 id_rsa.pub 内容到 .ssh/authorized_keys 文件
chmod 600 id_rsa
chmod 600 id_rsa.pub
chmod 600 authorized_keys
2.3 给所有者(hduser)权限
chmod 777 authorized_keys
2.4 测试
ssh root@master
ssh root@slave1
ssh root@slave2
配置Hadoop
在192.168.11.10进行文件配置,然后通过scp命令同步到其他两台机器上。
1, 修改 core-site.xml
cd /usr/local/hadoop/etc/hadoop
vi core-site.xml
添加以下内容
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
</property>
</configuration>
2, 修改 hdfs-site.xml
cd /usr/local/hadoop/etc/hadoop
vi hdfs-site.xml
添加以下内容
<configuration>
<property>
<name>dfs.replication</name>
<value>3</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>
</configuration>
3,修改 mapred-site.xml
cd /usr/local/hadoop/etc/hadoop
vi mapred-site.xml
添加以下内容
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:9020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:9888</value>
</property>
</configuration>
4,修改 yarn-site.xml
cd /usr/local/hadoop/etc/hadoop
vi yarn-site.xml
添加以下内容
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
5,修改 workers 文件
cd /usr/local/hadoop/etc/hadoop
vi wokers
添加以下内容
master
slave1
slave2
6, 同步文件
配置完成后将以上5个文件同步到slave1,slave2节点
scp -r /usr/local/hadoop/etc/hadoop/workers root@slave1:/usr/local/hadoop/etc/hadoop
scp -r /usr/local/hadoop/etc/hadoop/core-site.xml root@slave1:/usr/local/hadoop/etc/hadoop
scp -r /usr/local/hadoop/etc/hadoop/hdfs-site.xml root@slave1:/usr/local/hadoop/etc/hadoop
scp -r /usr/local/hadoop/etc/hadoop/mapred-site.xml root@slave1:/usr/local/hadoop/etc/hadoop
scp -r /usr/local/hadoop/etc/hadoop/yarn-site.xml root@slave1:/usr/local/hadoop/etc/hadoop
slave2上的节点配置也需要修改
scp -r /usr/local/hadoop/etc/hadoop/workers root@slave2:/usr/local/hadoop/etc/hadoop
scp -r /usr/local/hadoop/etc/hadoop/core-site.xml root@slave2:/usr/local/hadoop/etc/hadoop
scp -r /usr/local/hadoop/etc/hadoop/hdfs-site.xml root@slave2:/usr/local/hadoop/etc/hadoop
scp -r /usr/local/hadoop/etc/hadoop/mapred-site.xml root@slave2:/usr/local/hadoop/etc/hadoop
scp -r /usr/local/hadoop/etc/hadoop/yarn-site.xml root@slave2:/usr/local/hadoop/etc/hadoop
设置JDK
tar -zxvf jdk-8u271-linux-x64.tar.gz -C /usr/local
cd /usr/local
mv jdk1.8.0_271/ jdk8
设置环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/jdk8
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:.:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
启动Hadoop
1, 格式化文件系统
hdfs namenode -format
2, 启动Hadoop集群
cd /usr/local/hadoop/sbin
start-all.sh
报如下错误
修改hadoop/sbin里面的四个文件夹
1、对于start-dfs.sh和 stop-dfs.sh文件,添加下列参数:
cd /usr/local/hadoop/sbin
vi start-dfs.sh
vi stop-dfs.sh
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
2、对于start-yarn.sh和stop-yarn.sh文件,添加下列参数:
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
报Error:JAVA_HOME is not set and could not be found 问题解决
cd /usr/local/hadoop/etc/hadoop
vi hadoop-env.sh
修改
export JAVA_HOME=/usr/local/jdk8
通过 Web 端查看机器情况
在浏览器输入 http://192.168.11.10:8088/cluster