搭建全分布式Hadoop

title: 搭建全分布式Hadoop

date:2017-12-25 22:12:54

环境准备

  • 想要搭建全分布式hadoop, 我们至少要有两台机器, 一台做主节点, 一台做从节点. 本人是选择开启虚拟机来实现
  • hadoop资源下载 密码: c2vw

虚拟机配置

  1. 虚拟机选择,本人使用的是Virtual Box, Vmvare也可以, 这个无所谓,
  2. 其他都没什么讲的, 创建虚拟机的时候一路回车就好了, 但是网络模式记得改为桥接, 不要使用NAT网络地址转换

文件传输

  1. 将文件传输到服务器上, 因为我用的是Ubuntu Server所以用ssh传输 scp local_file remote_user@remote_ip:/home/user_name

    • local_file: 本地文件名(使用绝对地址)
    • remote_user: 远程主机用户名, 用户名相同时可省略
    • remote_ip: 远程主机ip, 不知道的话使用ifconfig命令查看即可
    • /home/user_name: 你想传输文件到远程主机的地址

其他配置

  1. 找到上传文件的地址, 执行install.sh
  2. 执行完shell脚本后, 使用hadoop version查看hadoop是否成功安装
  3. 修改/etc/hostname, 给两个结点改名, 我这里主节点改名为master, 从结点改名为slaver0
  4. 修改/etc/hosts, 将第二行127.0.1.1全部注释掉, 在下面添加IP地址和对应的主机名

    • MAIN_IP master
    • SLAVER_IP slaver0
  5. 在hadoop安装目录创建logs目录并更改拥有者和所属组sudo mkdir /opt/hadoop/logs chown -R mapred logs chgrp -R hadoop logs sudo chmod 775 logs

xml配置

  • 修改/opt/hadoop/etc/hadoop/core-site.xml 指明在集群中谁承担主节点的角色
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://MAIN_IP:9000</value>
    </property>
</configuration>
#9000是端口, 不允许改动 这里的MAIN_IP是指当做主节点的虚拟机的IP,下同
  • 修改/opt/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  • 修改/opt/hadoop/etc/hadoop/yarn-site.xml
<configuration>
    <!--指定ResourceManager的地址-->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>MAIN_IP</value>
        </property>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yran.nodemanager.local-dirs</name>
            <value>/data/hadoop/yarn/logs</value>
        </property>
    </configuration>
  • 修改/opt/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <name>dfs.nameservices</name>
        <value>hadoop-cluster1</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/data/hadoop/hdfs/snn</value>
    </property>
    <property>
        <name>fs.checkpoint.dir</name>
        <value>file:/data/hadoop/hdfs/snn</value>
    </property>
    <property>
        <name>fs.checkpoint.edits.dir</name>
        <value>file:/data/hadoop/dfhs/snn</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/data/hadoop/hdfs/dn</value>
    /property>
</configuration>

建立yarn和hdfs执行所需目录

  1. 建立data目录

    • sudo mkdir /data
  2. 在/data目录下新建hadoop目录

    • sudo mkdir /data/hadoop
  3. 在hadoop目录下新建hdfs和yarn目录

    • sudo mkdir /data/hadoop/hdfs
    • sudo mkdir /data/hadoop/yarn
  4. 在hdfs目录下新建dn, nn, snn目录

    • sudo mkdir /data/hadoop/hdfs/dn
    • sudo mkdir /data/hadoop/hdfs/nn
    • sudo mkdir /data/hadoop/hdfs/snn
  5. 在yarn目录下新建logs, nm目录

    • sudo mkdir /data/hadoop/yarn/logs
    • sudo mkdir /data/hadoop/yarn/nm
  6. 更改hdfs和yarn所属用户和用户组

    • sudo chown -R hdfs hdfs/
    • sudo chgrp -R hadoop hdfs/
    • sudo chgrp -R hadoop yarn/

格式化

  • hdfs namenode -format 记住这个主节点和从节点都需要格式化, 不能只格式化一个

其他服务器配置

  • 在其他服务器上, 也是同样的操作, 可以不重新配置, 将我们改过的配置文件, 用tar打包scp发送至其他服务器, 覆盖安装即可

服务器集群及关闭

使用 su - hdfs, 进入hdfs账户 默认密码hadoop

在主节点上启动

  • hadoop-daemon.sh start/stop namenode
  • yarn-daemon.sh start/stop resourcemanager

在从节点上启动

  • hadoop-daemon.sh start/stop datenode
  • yarn-daemon.sh start/stop nodemanager
  • 如果想偷懒的话,可以在主节点上使用start/stop-all.sh

监控平台

可能会遇到的错误

  • install.sh无法执行, 注意看是否有执行权限, 如果没有的话使用chmod命令添加执行权限,
  • hadoop version显示没有这个命令, 看看自己~/.bashrc文件里有没有如下代码export JAVA_HOME=/opt/jdk export HADOOP_HOME=/opt/hadoop export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 没有的话加进去
  • 东西搭起来后, 发现DataNode在master上, 更改/opt/hadoop/etc/hadoop/slaves, 默认是localhost, 改为SLAVER_IP

相关推荐