准备工作
两台centos虚拟机:
主机 | 别名 |
---|---|
192.168.0.49 | master |
192.168.0.53 | node1 |
两台主机用户名都为sunpeng(听说要统一)
首先配置master主机,配置好之后clone一份系统到node1,稍微改一下就可以,这样可以最大化保持环境一致
注:如没有特别说明,则master节点和node节点配置一样
1.装JDK
我的jdk目录为:/usr/Java/jdk1.8.0_101
配置环境变量:输入vim /etc/profile 回车
内容如下:
#set java environment
JAVA_HOME=/usr/java/jdk1.8.0_101
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
esc键 -> : -> wq -> enter键)(保存并返回)
检测是否成功,输入java -version,出现jdk版本号说明成功。
2. 修改本地计算机名
>vim /etc/sysconfig/network
修改内容如下:
NETWORKING=yes
HOSTNAME=master
注:node1的为:
NETWORKING=yes
HOSTNAME=node1
3.修改网络计算机名
>vim /etc/hosts
192.168.0.49 master
192.168.0.53 node1
4.修改hostname
master节点为:
>hostnamectl set-hostname "master"
注:node1节点为: hostnamectl set-hostname “node1”
5.重启
>reboot
6.配置hadoop配置文件
- hadoop/hadoop-env.sh
>vim /hadoop/hadoop-2.7.3/etc/hadoop/hadoop-env.sh
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/java/jdk1.8.0_101
- core-site.xml
>vim /hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
<property>
<name>io.sort.mb</name>
<value>1024</value>
</property>
</configuration>
- hdfs-site.xml
>vim /hadoop/hadoop-2.7.3/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.data.dir</name>
<value>/opt/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
- mapred-site.xml
>cp /hadoop/hadoop-2.7.3/etc/hadoop/mapred-site.xml.template /hadoop/hadoop-2.6.3/etc/hadoop/mapred-site.xml
>vim /hadoop/hadoop-2.7.3/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>master:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>nistest.master:9001</value>
</property>
</configuration>
- yarn-site.xml
>vim /hadoop/hadoop-2.7.3/etc/hadoop/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
- slaves
>vim /hadoop/hadoop-2.7.3/etc/hadoop/slaves
node1
7.克隆虚拟机到node1
环境配置先到这里了,然后克隆一份到node机器,开机之后发现跟master是一样的,修改下上面有特别说明的地方,比如hostname等等。
克隆按钮在这里,我已经克隆好了
8.ssh免密登录
配置下两台机器ssh免密登录:
检查下 ~/.ssh 文件夹没有则新建
- 在master上:
//一路狂按回车,最终生成(id_rsa,id_rsa.pub两个文件)
>ssh-keygen -t rsa
//把id_rsa.pub 复制到192.168.0.53这台node上
>scp ~/.ssh/id_rsa.pub sunpeng@192.168.0.53:~/.ssh
- 切换到node1(192.168.0.53 ):
//生成authorized_keys
>cat id_rsa.pub >> authorized_keys
//然后把authorized_keys scp到master
>scp ~/.ssh/authorized_keys sunpeng@192.168.0.49:~/.ssh
//两台机器都要改
//.ssh/ 文件夹权限改为700
//authorized_keys文件权限改为600
>chmod 700 ~/.ssh
>chmod 600 ~/.ssh/authorized_keys
- 两台主机改配置文件:
>vim /etc/ssh/sshd_config
# 禁用root账户登录,如果是用root用户登录请开启PermitRootLogin yes
# 是否允许用户自行使用成对的密钥系统进行登入行为(version 2)
PubkeyAuthentication yes
# 制的公钥数据目录 .ssh/authorized_keys 内的 RSAAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 证书登录,密码登录设为no
PasswordAuthentication no
- 启动ssh服务
>/bin/systemctl start sshd.service
- 重启
reboot
测试是否成功:
不用输密码了,直接登录进去了 ,成功,如果还提示要输入密码,那就是失败了,检查下哪里出错了。
9. 格式化(只在master)
>cd /hadoop/hadoop-2.7.3/bin/
>./hadoop namenode -format
中间会有一次 Y/N 选择,输入大写的 Y(大小写应该一样)
10.启动(只在master)
>cd /hadoop/hadoop-2.6.3/sbin
>./start-all.sh
启动之后,看下对应的程序是否启动了
- master:
master节点里,如果没有这些进程在,说明有些进程没有启动成功,检查下哪里错了
- node1:
node1数据节点里,如果没有这些进程在,说明有些进程没有启动成功,检查下哪里错了
我们这里都已经启动成功了,但是此时还不能松懈,要去log中看下是否有错误:
因为这是我之前调好的,所以没有错误了。
之前在node节点中的logs出现的错误(我的已经解决找不到了,这是类似的错误):
2015-08-22 21:44:19,478 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.200:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
2015-08-22 21:44:20,479 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.200:9000. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
原因是node节点中的network忘记修改了,所以node节点连接不到master。
环境搭建错误调试总结在另一篇博客:centos7 搭建hadoop2.7.3集群的错误调试
至此,搭建完毕,大功告成!