Hadoop集群完全分布式环境搭建(Vmware workstation11+ centOS7)
一 网络环境配置
二 JDK安装
1 检验centOS自带JDK
输入java –version 如下图所示是centOS自带的JDK,我们要重新安装。
2 安装JDK
[2.1] 我是用SSH Secure File Transfer工具将宿主机的jdk-xx.tar.gz传输到客户机的Downloads目录下,
你可以以你自己的方式将jdk-xx.tar.gz放在虚拟机上。
[2.2] 解压JDK (lxf/Downloads/)
tar –zxvf jdk-8u65-linux-x64.tar.gz
[2.3] 将jdk1.8.0_65移动到Hadoop目录下
[2.4] 配置JDK环境变量
etc/profile文件,编辑此文件需要root权限
su root
Profile文件末尾追加以下内容
export JAVA_HOME=/home/lxf/Hadoop/jdk1.8.0_65
export JRE_HOME=/home/lxf/Hadoop/jdk1.8.0_65/jre
export PATH=$JRE_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
source /etc/profile //使修改立即生效
echo $PATH //查看PATH值
3 检验安装成功
Java –version 出现以下内容,没有了openjdk
三 HADOOP安装
1 安装HADOOP
如上一样以自己的方式将hadoop-xx.tar.gz放在Downloads目录下
解压hadoop-xx.tar.gz
将解压后的文件移动到Hadoop目录下
2 HADOOP全局环境变量配置
etc/profile目录下
su root
vi profile 在文件末尾追加以下内容
export HADOOP_HOME=/home/lxf/Hadoop/hadoop-2.7.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JRE_HOME/bin:$JAVA_HOME/bin:$PATH
source /etc/profile
3 检验安装成功
hadoop version
四 SSH配置无密登录
1 安装SSH
yum install openssh-server
service sshd restart
2 SSH配置
[master主机 s200]
进入.ssh目录下 cd .ssh
ssh-keygen -t rsa 一直回车 生成id_rsa,id_rsa.pub两个文件
把id_rsa.pub复制到s201 s202两台node上去.(注意这里的操作不要以root用户身份操作)
scp ~/.ssh/id_rsa.pub lxf@s201:~/.ssh/
scp ~/.ssh/id_rsa.pub lxf@s202:~/.ssh/
切换到s201,s202:
cd .ssh
cat id_rsa.pub >> authorized_keys
然后把authorized_keys scp到s200.
scp ~/.ssh/authorized_keys lxf@s200:~/.ssh
示例如下图
3 成功检验
如下图操作完成无密登录
上图两次登录都无需密码
五 HADOOP完全分布式集群搭建
Hadoop/hadoop-2.7.2/etc/hadoop目录下
core-site.xml
<?xml version="1.0" ?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://s200:8020/</value>
</property>
</configuration>
hdfs-site.xml
<?xml version="1.0" ?>
<configuration>
<property>
<name>dfs.replication</name>#副本数
<value>2</value>
</property>
#第二名称节点配置文件hdfs-site.xml
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>s104:50090</value>
</property>
#50070namenode 50075 datanode 50090 secondrynode</configuration>
yarn-site.xml
<?xml version="1.0" ?>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>#资源管理器
<value>s200</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>#节点管理器
<value>mapreduce_shuffle</value>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0" ?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
slaves
S201
S202
六 验证Hadoop集群启动成功
1 查看进程
1.1 输入start-dfs.sh命令,jps命令查看进程,有:
jps
namenode
datanode
secondaryNameNode
如下图所示:
1.2 输入start-yarn.sh命令,jps命令查看进程,有:
NodeManager
ResourceManager
如下图所示:
2 查看webUI
当webUI显示集群启动,Hadoop集群才是真正的启动。
浏览器地址http://s200:50070
进入Datanodes,如下图所示:
问题
缺少DataNode进程
jps查看进程 我的缺少DataNode
logs/hadoop-lxf-datanode-s202.log目录下,查看此日志文件,搜索带有Exception字段的内容
grep -rn "Exception"hadoop-lxf-datanode-s202.log
从以上可以看出我的问题是clusterID(集群id)不一致
先把集群停掉
把你/tmp/hadoop-lxf文件夹全部删掉,然后重新格式化,再启动
cd /tmp
rm –rf hadoop-lxf
hadoop namenode –format
start-all.sh
jps 现在应该有了5个进程
[备注]一般没有DataNode 要么是没有格式化,要么是格式化多了导致ClisterID不一致
Hadoop中jps查看存在dataNode进程,而webUI没有dataNode
Hadoop启动报Error:JAVA_HOME is not set and could not be found 解决办法
Hadoop安装目录下/etc/hadoop/hadoop-env.sh中设JAVA_HOME
exportJAVA_HOME=$JAVA_HOME //错误,不能这么改
export JAVA_HOME=/home/lxf/Hadoop/jdk1.8.0_65 //正确,应该这么改
CentOS 7:
systemctl start firewalld.service#启动firewall
systemctl stop firewalld.service#停止firewall
systemctl disable firewalld.service#禁止firewall开机启动
scp -r hadooplxf@s201:/hadoop-2.7.2/etc/hadoop scp -r hadoop lxf@s202:/hadoop-2.7.2/etc/hadoop