文章目录
初始设定:
虚拟了三个CentOs系统(安装CentOs的步骤省略),一台master 两台slave,用户名全部为hadoop,具体如下(除了第一步使用root用户操作,其他均使用hadoop用户):
1.新增hadoop用户
第一步:groupadd 新建用户组
groupadd hadoop
这是创建hadoop用户组
第二步:useradd -m -g 已创建用户组 新建用户
useradd -m -g hadoop hadoop
这是新建hadoop用户和家目录也创建,并增加到hadoop组中。
2.给hadoop用户增加sudo权限以及修改host
1)切换到root用户,su 输入密码
2)给sudoers增加写权限:chmod u+w /etc/sudoers
3)编译sudoers文件:vi /etc/sudoers
在root ALL=(ALL) ALL下方增加hadoop ALL=(ALL) NOPASSWD:ALL
4)去掉sudoers文件的写权限:chmod u-w /etc/sudoers
5)修改host,vi /etc/hosts
192.168.1.106节点修改为master
192.168.1.107节点修改为slave1
192.168.1.107节点修改为slave2
6)每台都增加5)里面的域名解析
3.ssh免密码登录
首先要配置本机的SSH服务器,运行 ps -e | grep ssh
,查看是否有sshd进程,如果没有,说明server没启动,通过 /etc/init.d/ssh -start
启动server进程,如果提示ssh不存在 那么就是没安装server。centos下通过 yum -y install openssh-serve
r命令安装即可。
生成当前用户的SSH公钥。
$ ssh-keygen -t rsa -P ""
它在/home/[你当前登录的用户名] 下生成.ssh目录(root用户即是在/root目录下),.ssh下有id_rsa和id_rsa.pub。id_rsa.pub即是本地SSH生成的公钥文件。客户端机器将id_rsa.pub文件添加到自己的~/.ssh/authorized_keys文件中即可免密码登录到本机。
添加密钥
将~/.ssh/id_rsa.pub
添加到目标机器的~/.ssh/authorized_keys
文件中
• 如果是本机的操作,则使用
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
将要登录的机器的公钥添加到本地的认证密钥库中。注意这里必须要用>>操作符进行追加操作。
使用
ssh localhost
命令即可免密码登录到本地。
•如果是将自己的公钥发送到别的机器上。
可以使用
scp ~/.ssh/id_rsa.pub [email protected]:.ssh/id_rsa.pub
这条scp命令进行文件上传操作。
遇到的大坑:
配置ssh免密码登录后,仍提示输入密码
解决方法:
首先我们就要去查看系统的日志文件
tail /var/log/secure -n 20
发现问题的所在:Authentication refused: bad ownership or modes for file
从字面上可以看出是目录的属主和权限配置不当,查找资料得知:SSH不希望home目录和~/.ssh目录对组有写权限,通过下面几条命令改下
chmod g-w /home/zhangming
chmod 700 /home/zhangming/.ssh
chmod 600 /home/zhangming/.ssh/authorized_keys
然后我们再去登录,就能不用密码进入了。
4.安装jdk,设置变量
通过把jdk传进去,然后解压,设定环境变量:
export JAVA_HOME=/home/hadoop/env/jdk1.7.0_80
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/home/hadoop/env/hadoop-2.5.0
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
拷贝.bash_profile到两台其他节点电脑
scp .bash_profile hadoop@slave1:~/tmp
scp .bash_profile hadoop@slave2:~/tmp
然后每个都source一下source .bash_profile
5.配置hadoop配置文件
设置hadoop-env.sh、yarn-env.sh的JAVA_HOME
编辑hdfs-site.xml
<!-- 设置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/data/hadoop/name</value>
</property>
<!-- 设置hdfs副本数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 设置datanode存放的路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/hadoop/data</value>
</property>
编辑core-site.xml
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/data/hadoop/tmp</value>
</property>
编辑mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</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>
编辑yarn-site.xml
<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>
<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>
指定secondary namenode 的主机
新建一个masters的文件,这里指定的是secondary namenode 的主机
slave1
指定slave
修改slaves
slave1
slave2
6.发送hadoop到其他节点系统
scp -r hadoop-2.5.0 hadoop@slave1:~/env/
scp -r hadoop-2.5.0 hadoop@slave2:~/env/
7.第一次启动格式化,再启动
./bin/hdfs namenode -format
./sbin/start-dfs.sh
./sbin/start-yarn.sh
8.结果
9.页面端查看
可能涉及到的知识点:
1.hostname修改
1.uname -a
查看hostname
2.hostname newname
修改下,让hostname立刻生效。
3.vi /etc/hosts
修改原hostname为 newname
4.vi /etc/sysconfig/network
修改原hostname为newname , reboot重启后也生效
2.查看端口是否被占用
netstat -anp | grep 端口
3.关闭防火墙
service iptables stop
关闭防火墙
chkconfig iptables off
永久关闭防火墙
4.重启网络
service network restart