• # 从零開始搭建Hadoop2.7.1的分布式集群


    Hadoop 2.7.1 (2015-7-6更新),Hadoop的环境配置不是特别的复杂,可是确实有非常多细节须要注意。不然会造成很多配置错误的情况。尽量保证一次配置正确防止重复改动。

    网上教程有非常多关于Hadoop配置的,可是每个教程都相应了一个版本号信息。有一些教程也存在非常大的问题,配置环境,系统环境都没说清楚。在此我将记录下来从零搭建Hadoop2.7.1的过程,以及搭建过程中所遇到的一些问题。

    一 操作环境说明

    1.1 :操作系统: window8.1

    1.2 :虚拟机版本号:VMware12

    二 材料准备

    2.1 ubuntu-14.10-desktop-amd64.iso (Ubuntu 光盘映像)

    2.2 jdk-8u65-linux-x64.gz (Java 环境包)

    2.3 hadoop-2.7.1.tar.gz (Hadoop 环境包)

    三 搭建開始

    3.1 Vmware 创建虚拟机

    依据Hadoop的调度规则。我们将使用VMware 12 载入 ubuntu….iso来创建三个Ubuntu 虚拟机。创建用典型安装就可以,下面是虚拟机的一些信息

    虚拟机1:Master Ubuntu 14.10 64bit
    虚拟机2:Slave1 Ubuntu 14.10 64bit
    虚拟机3:Slave2 Ubuntu 14.10 64bit

    下面操作将须要在全部配置机器上进行

    3.2 解压文件

    将jdk-8u65-linux-x64.gz 和hadoop-2.7.1.tar.gz 复制到3台虚拟机的一个目录中。

    我这里复制到了Home/Download目录中, 然后右键选择 Extract Here. (当然也可以zxvf)

    3.3 配置JAVA

    把jdk-8u65-linux-x64 重命名为jdk-8u65-linux-x64.tar.gz 并右键Extract Here,生成文件jdk 1.8.0_65

    打开终端输入命令:
    
    sudo mkdir /usr/lib/jvm

    sudo cp -r Downloads/jdk1.8.0_65 /usr/lib/jvm/

    加入环境变量

    sudo gedit /etc/profile

    在末尾加上四行:

    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_65
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
    

    输如命令使环境生效

    source /etc/profile

    输如命令查看环境是否配置成功

    java –version

    出现如上信息说明配置成功

    3.4 SSH 安装以及配置

    更新apt (因为是新系统可能会花一些时间)

    sudo apt-get update

    安装ssh

    sudo apt-get install openssh-server

    已有ssh或者成功安装了的输入命令

    ps -e | grep ssh

    假设用的是和我同样的ubuntu版本号安装会遇到问题。安装过程中遇到404 Not Find(假设没有则跳过直接验证SSH)

    这里写图片描写叙述

    下载sources.list 存入Home目录下输入命令覆盖原文件

    sudo cp sources.list /etc/apt/sources.list

    更行apt-get

    sudo apt-get update

    再次安装ssh

    sudo apt-get install openssh-server

    如遇到版本号问题则參考下面命令安装

    sudo apt-get install openssh-client=1:6.6p1-2ubuntu1

    验证SSH是否成功安装输入

    ssh localhost

    出现下面提示说明成功安装

    这里写图片描写叙述

    生成密钥Pair

    ssh-keygen –t rsa

    输入后一直回车选择默认就可以

    这里写图片描写叙述

    mater主机中输入命令复制一份公钥到home中

    cp .ssh/id_rsa.pub ~/id_rsa_master.pub

    把master的home目录下的id_rsa_master.pub拷到slave1,slave2的home下

    slave1和 slave2的home目录下分别输入命令

    cat id_rsa_master.pub >> .ssh/authorized_keys

    至此实现了mater对slave1, slave2的无password登陆

    下面配置将只在master主机上进行
    3.5 配置 Hadoop
    (为了配置方便,将解压缩好的hadoop-2.7.1目录复制到home根目录下面)
    在hadoop-2.7.1目录下创建文件,输入

    mkdir hadoop-2.7.1/tmp
    mkdir hadoop-2.7.1/hdfs
    mkdir hadoop-2.7.1/hdfs/name
    mkdir hadoop-2.7.1/hdfs/data

    输入命令查看ip地址

    ifconfig -a

    eg. 我所使用的IP地址

    虚拟机1:Master   192.168.152.128
    虚拟机2:Slave1   192.168.152.129
    虚拟机3:Slave2   192.168.152.130
    

    改动hosts

    sudo gedit /etc/hosts

    具体IP地址由上面给出,可依据自己的配置情况自行调整

    这里写图片描写叙述
    为了方便改动hostname

    sudo gedit /etc/hostname

    master 的改为 master
    slave1 的改为 slave1
    slave2 的改为 slave2

    改动环境变量

    cd ~/hadoop-2.7.1/

    (1)hadoop-env.sh

    gedit etc/hadoop/hadoop-env.sh

    找到JAVA_HOME=… 一行改动为JAVA HOME的路径

    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_65

    (2)core-site.xml

    gedit etc/hadoop/core-site.xml

    在configuration标签中加入

        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
        </property>
    
        <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/home/zhaoli/hadoop-2.7.1/tmp</value>
        </property>
    

    (3)mapred-site.xml

    创建并编辑

    cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
    gedit etc/hadoop/mapred-site.xml
    

    在configuration标签中加入

        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
        </property>
    
        <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/home/zhaoli/hadoop-2.7.1/tmp</value>
        </property>
    

    (4)hdfs-site.xml

    gedit etc/hadoop/hdfs-site.xml

    在configuration标签中加入

        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/home/zhaoli/hadoop-2.7.1/hdfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/home/zhaoli/hadoop-2.7.1/hdfs/data</value>
        </property>
        <property>
            <name>dfs.replication</name>
            <value>2</value>
        </property>
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>master:9001</value>
        </property>
    

    (5)yarn-site.xml

    gedit etc/hadoop/yarn-site.xml

    在configuration标签中加入

        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.nodemanager.auxservices.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>
    

    (6)slaves文件

    gedit etc/hadoop/slaves

    删除原有内容,依据配置改动,此处为

    slave1
    slave2
    

    分发配置好的hadoop目录到slave1, slave2

    前提是设置好ssh

    scp -r hadoop-2.7.1 zhaoli@slave1:~/ 
    scp -r hadoop-2.7.1 zhaoli@slave2:~/ 
    

    格式化hdfs
    进入hadoop home目录

    bin/hdfs namenode-format

    启动集群

    sbin/start-all.sh

    启动后分别在master, slave下输入jps查看进程

    这里写图片描写叙述

    这里写图片描写叙述

    如上则说明启动成功

    执行wordcount測试集群

    进入hadoop home目录
    在hdfs(分布式文件系统)中创建一个名为input的目录

    bin/hadoop fs –mkdir /input

    查看文件是否被创建

    bin/hadoop fs –ls /

    hadoop home 下创建一个inputfile 目录,并在inputfile里创建两个文件

    in1.txt

    Hello world hello hadoop

    in2.txt

    Hello Hadoop hello whatever

    上传两个文件进input

    bin/hadoop fs -put inputfiles/*.txt /input

    查看输入文件是否传入

    bin/hadoop fs -ls /input

    这里写图片描写叙述

    用hadoop jar命令执行Hadoop自带的wordcount

    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /input /output

    这里写图片描写叙述

    程序開始执行,成功后查看输出目录

    bin/hadoop fs -ls /output

    查看结果

    bin/hadoop fs -cat /output/part-r-00000

    这里写图片描写叙述

    至此hadoop分布式集群配置完毕!

    以上是对Hadoop的配置信息,希望可以尽可能的写得具体,可是终究不能概括全部的bug。之前也看了非常多集群搭建的书和博客。还是遇到了非常多困难。本次从零開始配置也是为了排除一些干扰。希望可以帮助到和我一样摸索前进的人吧。

  • 相关阅读:
    【翻译】JavaScript循环和作用域
    【js-xlsx和file-saver插件】前端导出数据到excel
    H5混合开发进阶
    一分钟搞定vue全局注册事件eventBus
    cordova+vue构建app进阶
    LayaBox进阶之UI管理器
    Layabox进阶之资源加载
    H5混合开发进阶之inspect调试
    认识json
    正则学习记录
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7088136.html
Copyright © 2020-2023  润新知