zoukankan      html  css  js  c++  java
  • CentOS7搭建hadoop2.6.4双节点集群

    环境:

    CentOS7+SunJDK1.8@VMware12。

    NameNode虚拟机节点主机名:master,IP规划:192.168.23.101,职责:Name node,Secondary name node,Resource manager。

    DataNode虚拟机节点主机名:slave1,IP规划:192.168.23.102,职责:Data node,Node manager。

    每个虚拟机分配资源:CPU单颗,内存2GB,硬盘20GB。

    过程概要:

    1. 创建2个虚拟机,主机名分别为:master(做NameNode、JobTracker)、slave1(做DataNode、TaskTracker),分配固定ip。
    2. 每个虚拟机都创建一个hadoop用户,并拥有sudo权限。
    3. 解压hadoop包,并把其所属用户及组改为hadoop、hadoop。
    4. 生成openssh密钥对,使master、slave之间的ssh访问免输密码。

    过程详细:

    • VMware中建立两个CentOS7主机,创建上述两个主机名和固定IP(VMware CentOS固定IP设置参见http://www.centoscn.com/CentOS/config/2014/1028/4009.html)。

    以master节点为例:

    修改/etc/hosts为(注意:要把集群所有节点的ip跟主机名映射全加进来):

     修改:/etc/sysconfig/network-scripts/ifcfg-eno16777736为(经测试,此种方法可能会被系统再次动态增加一个IP地址,变成双IP。因此不如图形界面的方法可靠):

     

     或者在CentOS7的图形界面下,点击网络图标,IP改为手动,设置IP地址、掩码、网关、DNS(推荐)

    上述为master节点。slave节点类似修改。确保双方IP能互相ping通。

    • 创建hadoop用户,并赋予sudo权限:

    命令:su   root  (切换到root用户)

    命令:chmod u+w /etc/sudoers (给sudoers增加写权限)

    命令:vi /etc/sudoers  (修改sudoers文件)

            执行命令后会进入sudoers文件的查看模式,该模式下按“i”进入文件修改模式,

            然后在root ALL=(ALL)  ALL下方增加hadoop ALL=(ALL)NOPASSWD:ALL  按 “esc”键推出修改模式,大写模式下,按两次“z”保存退出。

    命令:chmod u-w /etc/sudoers (撤销sudoers文件的写权限)。

    改后的/etc/sudoers文件内容如下:

    把hadoop-2.6.4.tar.gz拷贝到/usr/下,解压:tar zxvf hadoop-2.6.4.tar.gz ,并用chmod、chgrp命令将其所属用户、用户组都改为hadoop(重要!否则hadoop无法在其中新建临时目录和日志)。效果如下:

    • 创建ssh免密码登录:

    Master机器上生成密码对。命令:ssh-keygen –t rsa  (生成其无密码密钥对,一路回车键,生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录)

    命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (把id_rsa.pub追加到授权的key里面去)

    命令:chmod 600 ~/.ssh/authorized_keys(修改文件"authorized_keys"权限,这步骤很重要,很多莫名其妙的错误有可能就是权限的问题)

    命令:sudo vi /etc/ssh/sshd_config (修改SSH配置文件"/etc/ssh/sshd_config"),修改如下内容:

    RSAAuthentication yes # 启用 RSA 认证
    PubkeyAuthentication yes # 启用公钥私钥配对认证方式
    AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

    命令:service sshd restart(重新启动服务)

    命令:ssh localhost  (测试是否成功)

    下面是把公钥复制到所有的slave节点上去:

    命令:scp ~/.ssh/id_rsa.pub hadoop@192.168.239.129:~/(记得改成自己的ip,这个是我的slave1的ip,就是把master节点的公钥发送到了slave1的根目录下了)

    • 卸载openjdk,安装sun-jdk8(过程不赘述),安装后效果如下:

    • 关闭CentOS7的防火墙:
    • systemctl stop firewalld.service #停止
      systemctl disable firewalld.service #禁用
      之前的版本:
      service iptables stop #停止
      chkconfig iptables off #禁用
    • 修改几个重要的配置文件:

    添加环境变量

    /etc/profile里添加

    export HADOOP_HOME=/usr/hadoop-2.6.4/
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    修改 Hadoop 配置文件

    在 hadoop 解压路径下面,/etc/hadoop/hadoop-env.sh 增加下面两行

    export JAVA_HOME=/usr/java/jdk1.8.0_101
    export HADOOP_PREFIX=/usr/hadoop-2.6.4

    在 hadoop 解压路径下面,/etc/hadoop/core-site.xml增加下面内容:

    <configuration>
    <property> <name>fs.defaultFS</name> <value>hdfs://master:9000/</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop-2.6.4/tmp</value> </property> </configuration>

    在 hadoop 解压路径下面,/etc/hadoop/hdfs-site.xml 增加下面内容:

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>2</value>
        </property>
    </configuration>

    这里设置成2,表示数据有2个副本(数值不大于DataNode数)。

    在 hadoop 解压路径下面,/etc/hadoop/mapred-site.xml 增加下面内容:

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>

    在 hadoop 解压路径下面,/etc/hadoop/yarn-env.sh 增加下面,增加JAVA_HOME 配置:

    export JAVA_HOME=/usr/java/jdk1.8.0_101

    在 hadoop 解压路径下面,/etc/hadoop/yarn-site.xml 增加下面内容:

    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
        </property>
      <property> 
      <description>The address of the applications manager interface in the RM.</description> 
      <name>Yarn.resourcemanager.address</name> 
      <value>master:18040</value> 
      </property> 
    
      <property> 
      <description>The address of the scheduler interface.</description> 
      <name>Yarn.resourcemanager.scheduler.address</name> 
      <value>master:18030</value> 
      </property> 
    
      <property> 
      <description>The address of the RM web application.</description> 
      <name>Yarn.resourcemanager.webapp.address</name> 
      <value>master:18088</value> 
      </property>
    
      <property> 
      <description>The address of the resource tracker interface.</description> 
      <name>Yarn.resourcemanager.resource-tracker.address</name> 
      <value>master:8025</value> 
      </property> 
    </configuration>

    这里添加的一些端口号,方便从远程通过浏览器查看集群情况,推荐按照这样添加。

    在 hadoop 解压路径下面,/etc/hadoop/slaves 增加下面内容:

    master
    slave1

    按照上面流程,把 slaver1上的环境变量添加好,然后直接:

    scp -r /hadoop2.6.4 hadoop@slave1:/usr/

    复制到 slave1下面。

    启动 hadoop 集群:

    格式化文件系统:

    hdfs namenode -format

    启动 NameNode 和 DateNode:

    /usr/hadoop-2.6.4/sbin , 运行:

    start-dfs.sh

    使用 jps 命令查看 master 上的Java进程,我的进程如下:

     jps 命令也可以查看 slave1上的 Java 进程。应该可以看到DataNode启动。如:

    [hadoop@slave1 hadoop]# jps
    6130 DataNode
    1264 Jps

    查看 NameNode 和 NameNode 信息:

    master的浏览器输入:

    localhost:50070/dfshealth.html#tab-datanode

    可以看到DataNode启动成功。

    启动 ResourceManager 和 NodeManager

    运行 start-yarn.sh , jps查看进程如下:

    切换到 slave1,jps查看进程:

    [hadoop@slave1 hadoop]# jps
    27130 DataNode
    12379 Jps
    28916 NodeManager

    成功了

    Hadoop 集群就已经启动了。

    ----------------------------------------------------------------------------------------------------------------------------------------

    最后,参考文章:

    配置sudoer权限、创建免密码登录:http://blog.sina.com.cn/s/blog_95b63fc90102vrvy.html

    修改hadoop配置文件、进程查看:http://blog.csdn.net/sa14023053/article/details/51952534

  • 相关阅读:
    软件体系风格选择小结
    bert入门资料
    RNN入门和seq2seq
    推荐系统论文源码笔记——依次学习之DKN源码笔记
    Mac os下gcc编译错误解决方案
    ns3 安装方法
    angular http ajax header
    javascript 实现htmlEncode htmlDecode
    windows下的python扩展包下载地址
    php版DES
  • 原文地址:https://www.cnblogs.com/xuxy03/p/5922047.html
Copyright © 2011-2022 走看看