zoukankan      html  css  js  c++  java
  • hadoop2.7全然分布式集群搭建以及任务測试

    要想深入的学习hadoop数据分析技术,首要的任务是必需要将hadoop集群环境搭建起来,本文主要讲述怎样搭建一套hadoop全然分布式集群环境。

    环境配置:2台64位的redhat6.5 +  1台64位centos6.9 + Hadoop + java7

    一、先配置server的主机名

    Namenode节点相应的主机名为master

    Datanode节点相应的主机名分别为node1、node2

    1、 在每一台server上运行vim /etc/hosts, 先删除hosts里面的内容。然后追加下面内容:

    192.168.15.135  master
    172.30.25.165   node1
    172.30.25.166   node2

    2、 在每一台server上运行vim  /etc/sysconfig/network。改动红色部分的内容。相应上面所说的hostname,对于master节点那么hostname就为master

    NETWORKING=yes
    HOSTNAME= master
    NETWORKING_IPV6=yes
    IPV6_AUTOCONF=no

    类似的。在node1server节点上应该为:

    NETWORKING=yes
    HOSTNAME= node1
    NETWORKING_IPV6=yes
    IPV6_AUTOCONF=no

    类似的,在node2server节点上应该为:

    NETWORKING=yes
    HOSTNAME= node2
    NETWORKING_IPV6=yes
    IPV6_AUTOCONF=no

    这两步的作用非常关键。假设配置不成功,进行分布式计算的时候有可能找不到主机名

    二、安装SSH,并让master免验证登陆自身server、节点server

    1、 运行以下命令,让master节点可以免验证登陆自身server

    ssh-keygen -t dsa -P'' -f ~/.ssh/id_dsa
    cat ~/.ssh/id_dsa.pub>> ~/.ssh/authorized_keys
    exportHADOOP\_PREFIX=/usr/local/hadoop

    HADOOP_PREFIX表示自己安装的hadoop路径

    2、 让主结点(master)能通过SSH免password登录两个子结点(slave)

    为了实现这个功能。两个slave结点的公钥文件里必需要包括主结点的公钥信息,这样当master就能够顺利安全地訪问这两个slave结点了。操作步骤例如以下:

    在node1上运行

    scp root@master:~/.ssh/id_dsa.pub  ~/.ssh/master_dsa.pub
    cat~/.ssh/master_dsa.pub >> ~/.ssh/authorized_keys

    在node2上运行

    scp root@master:~/.ssh/id_dsa.pub  ~/.ssh/master_dsa.pub
    cat~/.ssh/master_dsa.pub >> ~/.ssh/authorized_keys


    如上过程显示了node1结点通过scp命令远程登录master结点,并复制master的公钥文件到当前的文件夹下,这一过程须要password验证。接着。将master结点的公

    钥文件追加至authorized_keys文件里,通过这步操作,假设不出问题,master结点就能够通过ssh远程免password连接node1结点了。在master结点中操作如:


    当然值得注意的是:首次登陆是须要确认的。node1结点首次连接时须要,“YES”确认连接,这意味着master结点连接node1结点时须要人工询问,无法自己主动连接。输入yes后成功接入,紧接着注销退出至master结点。要实现ssh免password连接至其他结点,还差一步,仅仅须要再运行一遍ssh node1。假设没有要求你输入”yes”。就算成功了。

    三、下载并解压hadoop安装包。配置hadoop

    1、 关于安装包的下载就不多说了,只是能够提一下眼下我使用的版本号为hadoop-2.7.1

    2、 配置namenode,改动site文件

    以下開始改动hadoop的配置文件了。即各种site文件。文件存放在etc/Hadoop/下,主要配置core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml这三个文件。

    这里我仅仅把我的实例贴出来。经供參考。很多其它具体配置请參照官方文档

    core-site.xml:

    <configuration>
        <property>
            <name>fs.defaultFS</name>
           <value>hdfs://master:9000</value>
        </property>
    </configuration>

    hdfs-site.xml:

    <configuration>
        <property>
           <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>master:9001</value>
        </property>
    </configuration>

    mapred-site.xml:

    <configuration>
        <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>
    </configuration>

    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>
        <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>
    </configuration>


    3、 配置namenode,改动env环境变量文件

    配置之前要说的话:你必须确保你已经安装了java6或者java7,而且java的环境变量已经配置好。因为本文的重点不在此。故不具体说明,我系统java的环境变量为/usr/java/jdk1.7.0_71

    所以讲hadoop-env.sh、mapred-env.sh、yarn-env.sh这几个文件里的JAVA_HOME改为/usr/java/jdk1.7.0_71,例如以下图所看到的:


    文件里的其它一些配置项。请參考官方文档

    4、 slaves文件配置,添加例如以下两行内容:

    node1
    node2

    四、向节点servernode1、node2复制我们刚刚在masterserver上配置好的hadoop

    scp–r hadoop  root@node1:/usr/local/hadoop
    scp–r hadoop  root@node2:/usr/local/hadoop


    五、格式化namenode,在master节点上运行例如以下命令:

    bin/hdfs namenode-format 


    仅仅要出现“successfully formatted”就表示成功了。

    六、启动hadoop

    这一步也在主结点master上进行操作:

    七、用jps检验各后台进程是否成功启动

    master


    node1


    node2


    八、向hadoop集群系统提交第一个mapreduce任务

    到这里为止我们已经完毕了一个真正意义上的hadoop全然分布式环境搭建,以下我们要像这个集群系统提交第一个mapreduce任务

    1、  bin/hdfs dfs -mkdir /tmp 在虚拟分布式文件系统上创建一个測试文件夹tmp

    2、  bin/hdfs dfs -copyFromLocal ./ LICENSE.txt /tmp 将当前文件夹下的LICENSE文件拷贝到虚拟分布式文件系统中

    3、bin/hdfs dfs-ls /tmp查看文件系统中是否存在我们所复制的文件

    以下这张图显示了一系列的操作过程


    3、  执行例如以下命令向hadoop提交单词统计任务

    bin/hadoop jar./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount/tmp/LICENSE.txt /tmp-output 

    最后会显示一个运算结果:



    到这里为止,你已经完毕了第一个任务的分布式计算

    注意:在你又一次格式化分布式文件系统之前,须要将文件系统中的数据先清除。否则,datanode将创建不成功。这一点非常重要

    关于一些常见的port

    master:8088能显示你的集群状态

    master: 50070能进行一些节点的管理

    除此之外,还有非常多实用的port。当然这也是和你的配置文件相关的。最后,贴上两张图片:




  • 相关阅读:
    正则表达式30分钟入门教程
    解读C#中的正则表达式1
    web开发技巧经验积累
    常用效果的实现(Javascript的子父页访问、函数调用)
    document.execCommand()编程
    把任意文件隐藏在一张图片里
    在C#中如何实现Form与Form之间的通信
    全国各个省市数据库
    对长时间装载的ASP.NET页如何在客户端浏览器中显进度
    关于UPC E条码的校验
  • 原文地址:https://www.cnblogs.com/llguanli/p/7371859.html
Copyright © 2011-2022 走看看