zoukankan      html  css  js  c++  java
  • hadoop分布式部署(2014-3-8)

    hadoop简介:

    (维基百科)Apache Hadoop是一款支持數據密集型分佈式應用并以Apache 2.0許可協議發佈的開源軟體框架。它支持在商品硬件構建的大型集群上運行的應用程序。Hadoop是根據Google公司發表的MapReduceGoogle檔案系統的論文自行實作而成。

    Hadoop框架透明地為應用提供可靠性和數據移動。它實現了名為MapReduce的編程範式: 應用程序被分割成許多小部分,而每個部分都能在集群中的任意節點上執行或重新執行。此外,Hadoop還提供了分佈式文件系統,用以存儲所有計算節點的數 據,這為整個集群帶來了非常高的帶寬。MapReduce和分佈式文件系統的設計,使得整個框架能夠自動處理節點故障。它使應用程序與成千上萬的獨立計算 的電腦和PB級的數據。現在普遍認為整個Apache Hadoop“平台”包括Hadoop內核、MapReduce、Hadoop分佈式文件系統(HDFS)以及一些相關項目,有Apache Hive和Apache HBase等等。

    主节点包括名称节点、从属名称节点和 jobtracker 守护进程(即所谓的主守护进程)以及管理
    集群所用的实用程序和浏览器。从节点包括 tasktracker 和数据节点(从属守护进程)。两种设
    置的不同之处在于,主节点包括提供 Hadoop 集群管理和协调的守护进程,而从节点包括实现
    Hadoop 文件系统(HDFS)存储功能和 MapReduce 功能(数据处理功能)的守护进程。
    每个守护进程在 Hadoop 框架中的作用。namenode 是 Hadoop 中的主服务器,它管理文件系
    统名称空间和对集群中存储的文件的访问。还有一个 secondary namenode,它不是
    namenode 的冗余守护进程,而是提供周期检查点和清理任务。在每个 Hadoop 集群中可以找
    到一个 namenode 和一个 secondary namenode。
    datanode 管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一
    个 datanode 守护进程。
    每个集群有一个 jobtracker,它负责调度 datanode 上的工作。每个 datanode 有一个
    tasktracker,它们执行实际工作。jobtracker 和 tasktracker 采用主-从形式,jobtracker 跨
    datanode 分发工作,而 tasktracker 执行任务。jobtracker 还检查请求的工作,如果一个
    datanode 由于某种原因失败,jobtracker 会重新调度以前的任务。

    环境:rhel6.3 selinux and iptables disabled, sshd enabled

    主机: 192.168.1.120 master
    192.168.1.122 slave
    192.168.1.123 slave
    192.168.1.121 slave(在线添加)
    软件:hadoop.apache.org


    master 配置:

        sh jdk-6u32-linux-x64.bin
        mv jdk1.6.0_32/ /usr/local/jdk

        tar  zxf hadoop-1.1.2.tar.gz -C /usr/local/
        cd /usr/local/hadoop-1.1.2/


        mv hadoop-1.1.2/ hadoop     //便于以后升级
        mv jdk/ hadoop/                  //便于以后升级

        vi conf/hadoop-env.sh :

    # The java implementation to use.  Required.
     export JAVA_HOME=/usr/local/hadoop/jdk

    cd conf/
    vi core-site.xml :

    <configuration>
         <property>
                  <name>fs.default.name</name>
                           <value>hdfs://192.168.1.120:9000</value>
                                </property>
    </configuration>

    vi hdfs-site.xml :
    <configuration>
         <property>
                  <name>dfs.replication</name>
                           <value>2</value>
                                </property>
    </configuration>

    vi mapred-site.xml:

    <configuration>
         <property>
                  <name>mapred.job.tracker</name>
                           <value>192.168.1.120:9001</value>
                                </property>
    </configuration>

      yum install openssh-clients -y

       ssh-keygen
       ssh-copy-id localhost

       ssh-copy-id 192.168.1.122
       ssh-copy-id 192.168.1.123

        scp  -r hadoop/ 192.168.1.122:/usr/local/
        scp  -r hadoop/ 192.168.1.123:/usr/local/

    cd /usr/local/hadoop
    bin/hadoop namenode -format

    bin/start-all.sh   //启动hadoop
    jdk/bin/jps        //查看时候否启动成功,正常如下:

    [root@server120 hadoop]# jdk/bin/jps
    12681 NameNode
    13260 Jps
    12918 JobTracker
    12826 SecondaryNameNode

    slave配置:

    只要在master作scp之前:yum install openssh-clients -y

    在master启动之后,cd /usr/local/hadoop

    jdk/bin/jps        //查看slave是否启动成功,正常如下:

    3182 TaskTracker
    4075 Jps
    3095 DataNode

    上述启动成功之后,还可以在web页面查看状态:

    NameNode:http://192.168.1.120:50070
    http:/JobTracker://192.168.1.120:50030

    测试:

    在master:

    cd /usr/local/hadoop
    bin/hadoop fs -put conf/ dir1  上传数据

    bin/hadoop fs -ls  查看数据信息

    bin/hadoop jar hadoop-examples-1.1.2.jar wordcount dir1 dir2 关键字统计,输出统计结果到dir2

    在统计过程中,可以在上述web页面产看状态和进度


    hadoop 在线添加节点:
    在master:

    ssh-copy-id 192.168.1.121
    cd /usr/local/hadoop/conf

    vi slaves :添加192.168.1.121

    cd ..

    scp -r hadoop/ 192.168.1.121:/usr/local/

    在新增节点上启动服务:

    cd /usr/local/hadoop/

    bin/hadoop-daemon.sh start datanode
    bin/hadoop-daemon.sh start tasktracker

    均衡数据:
    bin/start-balancer.sh
    1)如果不执行均衡,那么 cluster 会把新的数据都存放在新的 datanode 上,这样会降低 mapred
    的工作效率
    2)设置平衡阈值,默认是 10%,值越低各节点越平衡,但消耗时间也更长
     bin/start-balancer.sh -threshold 5

    hadoop 在线删除 datanode 节点:

    在 master 上修改 conf/mapred-site.xml,添加:

            <property>
              name>dfs.hosts.exclude</name>
             <value>/usr/local/hadoop/conf/excludes</value>
          </property>
        <property>
            <name>mapred.hosts.exclude</name>
        <value>/usr/local/hadoop/conf/excludes</value>

    在 d/usr/local/hadoop/conf下创excludes 文件,并添加需要删除的主机,一行一个:

    echo 192.168.1.121 > excludes

    在 master 上在线刷新节点
     bin/hadoop dfsadmin -refreshNodes

    可以通过以下命令查看 datanode 状态
    bin/hadoop dfsadmin -report





  • 相关阅读:
    C项目实践--贪吃蛇(2)
    Dos下同时执行多条命令简化操作
    C语言进入界面编程准备篇
    C项目实践--图书管理系统(4)
    C项目实践--图书管理系统(3)
    C项目实践--图书管理系统(1)
    C项目实践--图书管理系统(2)
    bzoj2302: [HAOI2011]Problem c
    bzoj3545: [ONTAK2010]Peaks
    loj#2537. 「PKUWC2018」Minimax
  • 原文地址:https://www.cnblogs.com/90zeng/p/hadoop_distribution_setup.html
Copyright © 2011-2022 走看看