vmware centos hadoop分布式集群搭建 粗略笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_30276961/article/details/82722398

初始设定:

虚拟了三个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-server命令安装即可。

生成当前用户的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.页面端查看

http://172.16.30.100:50070/

可能涉及到的知识点:

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

猜你喜欢

转载自blog.csdn.net/sinat_30276961/article/details/82722398