Ubuntu下搭建hadoop集群

Ubuntu下搭建hadoop集群


    预安装

    • JDK
      考虑到更好的兼容性,使用Oracle官方的JDK
      • 版本:Java 6或更新版本
      • 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
      • 使用PPA或下载解压即可
    • ssh
      $ sudo apt-get install ssh
    • rsync
      $ sudo apt-get install rsync

    安装

    1. 创建Hadoop用户:
      $ sudo mkdir /opt/hadoop
      $ sudo adduser --home /opt/hadoop hadoop
    2. 下载Hadoop稳定版并解压到/opt/hadoop目录,下载地址: http://www.apache.org/dyn/closer.cgi/hadoop/common/
    3. 在Hadoop的解压文件etc/hadoop/hadoop-env.sh中设置JDK安装环境,例如:
      export JAVA_HOME=/usr/lib/jvm/java-8-oracle/
    4. 将Hadoop的bin目录和JAVA的bin目录设置到hadoop用户的PATH环境变量里面
    5. 检查是否安装成功:
      $ hadoop version

    配置

    Hadoop有三种运行模式:本地(独立)模式(Local (Standalone) Mode)、伪分布式模式(Pseudo-Distributed Mode)、全分布式模式(Fully-Distributed Mode)

    本地(独立)模式

    默认即为本模式,本模式无需运行任何守护进程

    伪分布式模式

    修改配置文件
    • etc/hadoop/core-site.xml
      <configuration>
        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://0.0.0.0:8020</value>
        </property>
      </configuration>
    • etc/hadoop/hdfs-site.xml
      <configuration>
        <property>
          <name>dfs.replication</name>
          <value>1</value>
        </property>
        <property>
          <name>dfs.namenode.name.dir</name>
          <value>file:///opt/hadoop/hdfs/name</value>
        </property>
        <property>
          <name>dfs.datanode.data.dir</name>
          <value>file:///opt/hadoop/hdfs/data</value>
        </property>
      </configuration>
    • 若运行YARN则如下配置:
      • etc/hadoop/mapred-site.xml
        <configuration>
          <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
          </property>
        </configuration>
      • etc/hadoop/yarn-site.xml
        <configuration>
          <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>
        </configuration>
    设置无密码本地登录ssh
    $ sudo su - hadoop
    $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
    $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
    $ ssh localhost
    运行
    • 格式化文件系统
      $ hdfs namenode -format
    • 启动NameNode和DataNode守护进程
      $ start-dfs.sh
    • 启动ResourceManager和NodeManager守护进程
      $ start-yarn.sh

      若是Hadoop 1.x版本就是启动Jobtracker和tasktracker守护进程:
      $ start-mapred.sh
    • 管理界面
      • NameNode:
        http://localhost:50070/
      • ResourceManager:
        http://localhost:8088/
    停止守护进程
    $ stop-dfs.sh
    
    // Hadoop 2.x
    $ stop-yarn.sh
    
    // Hadoop 1.x
    $ stop-mapred.sh

    全分布式模式

    测试主机安排情况
    hostnameiprole
    hadoop0172.17.0.2主节点
    hadoop1172.17.0.3从节点
    hadoop2172.17.0.4从节点
    设置SSH无密码登陆各个节点

    只要让NameNode和ResourceManager节点可以无密码SSH登陆各个节点即可

    修改配置文件
    各个节点配置文件可以保持一致,在哪个节点执行启动脚本,则那个节点为主节点,以下以三个或以上DataNode进行配置
    • etc/hadoop/core-site.xml
      <configuration>
        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://hadoop0:8020</value>
        </property>
      </configuration>
    • etc/hadoop/hdfs-site.xml
      <configuration>
        <property>
          <name>dfs.replication</name>
          <value>3</value>
        </property>
        <property>
          <name>dfs.namenode.name.dir</name>
          <value>file:///opt/hadoop/hdfs/name</value>
        </property>
        <property>
          <name>dfs.datanode.data.dir</name>
          <value>file:///opt/hadoop/hdfs/data</value>
        </property>
      </configuration>
    • 若运行YARN则如下配置:
      • etc/hadoop/mapred-site.xml
        <configuration>
          <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
          </property>
        </configuration>
      • etc/hadoop/yarn-site.xml
        <configuration>
          <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop0</value>
          </property>
          <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>
        </configuration>
    • etc/hadoop/slaves 
      添加各个DataNode和NodeManager节点的hostname到该配置文件,一行为一条记录,当主节点起来时将会根据这个配置文件通过ssh去各个从节点
      hadoop0
      hadoop1
      hadoop2

      若主节点也要作为DataNode的话,也需添加记录进该配置文件
    • /etc/hosts
      将hostname与ip映射关系写到各个节点的/etc/hosts
      172.17.0.2 hadoop0
      172.17.0.3 hadoop1
      172.17.0.4 hadoop2
    运行
    格式化和启动操作只需在主节点执行即可
    • 格式化文件系统
      $ hdfs namenode -format

      若之前已经运行过伪分布式模式,建议格式化前先删除之前的临时文件
    • 启动NameNode和DataNode守护进程
      $ start-dfs.sh
    • 启动ResourceManager和NodeManager守护进程
      $ start-yarn.sh

      若是Hadoop 1.x版本就是启动Jobtracker和tasktracker守护进程:
      $ start-mapred.sh
    • 启动Mapreduce作业日志服务守护进程
      $ mr-jobhistory-daemon.sh start historyserver
    • 使用jps查看各个进程是否启动成功,若不成功则需根据启动日志来找出问题
    • 管理界面
      • NameNode:
        http://localhost:50070/
      • ResourceManager:
        http://localhost:8088/
    停止守护进程

    在主节点上执行

    $ stop-dfs.sh
    
    // Hadoop 2.x
    $ stop-yarn.sh
    
    // Hadoop 1.x
    $ stop-mapred.sh
    
    $ mr-jobhistory-daemon.sh stop historyserver

    测试

    • 创建HDFS目录
      $ hdfs dfs -mkdir /user
      $ hdfs dfs -mkdir /user/<username>
    • 复制input文件到分布式文件系统
      $ hdfs dfs -put etc/hadoop input
    • 执行MapReduce示例作业
      $ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar grep input output 'dfs[a-z.]+'
    • 检查output
      $ hdfs dfs -cat output/*

    如果执行过程遇到一直在running的情况,尝试重启Hadoop再试试,若不行,则可能是磁盘空间已经达到阈值或内存不足,可以修改配置文件的阈值或分配内存大小,一般的问题在执行日志里面都会有清晰的描述。

    参考

    Hadoop: Setting up a Single Node Cluster: http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/SingleCluster.html 
    Hadoop Cluster Setup: http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/ClusterSetup.html

    • 0
      点赞
    • 1
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值