hadoop集群搭建

1、准备三个节点

  1. 修改ip地址,静态ip地址
  2. 修改主机名称和主机映射
  3. 系统启动级别
  4. 防火墙和selinux

           service iptables stopnode

           chkconfig iptables offlinux

           selinux:linux的安全管理策略apache

                    /etc/selinux/configcentos

                    SELINUX=disabled安全

       5.同步时间bash

              date -s ""服务器

               ntpdate ntp1.aliyun.com负载均衡

       6. jdk安装ssh

              保证同名的普通用户而且配置ssh免密登陆jvm

2、集群搭建 

        单节点

        伪分布式集群

        彻底分布式

* 1.下载hadoop软件包

    http://hadoop.apache.org/

    http://archive/apache.org/dist/ 

  * 2.上传到服务器

    put -r hadoop.tar.gz

  * 3.解压操做

    1./opt/moudle/....  权限(用户名组修改成hadoop)

      sudo(sudoers权限配置)

    2./home/hadoop/

      tar -zxvf hadoop-2.7.7-centos-6.7.tar.gz

  * 4.目录结构

    bin: 可执行文件(操做命令 hdfs...)

    sbin:  可执行文件(集群启动关闭,负载均衡...)

    etc: 配置文件

    share: 共享文件(common/hdfs/mapreduce等jar)

  * 5.进程规划

 

  * 6.配置

    * hadoop-env.sh

      整个hadoop的环境,hadoop进程是jvm进程,配置jdk的环境变量

      export JAVA_HOME=/opt/jdk1.8.0_73

      运行一个mr示例:

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

    * core-site.xml

      默认的文件系统,默认值(file:///本地文件系统)

      hdfs://ip:port   hdfs集群的入口地址(namenode:客户端的请求和响应)

      1.使用分布式的文件系统

      2.namenode所在的节点为hdp01

      3.hdfs集群的访问路径: hdfs://hdp01:9000

      <property>

          <name>fs.defaultFS</name>

          <value>hdfs://hdp01:9000</value>

       </property>

      

      临时文件的存储目录:

      <property>

          <name>hadoop.tmp.dir</name>

          <value>/home/hadoop/hadoopdata</value>

       </property>

      ```

 

    * hdfs-site.xml

      dfs.replication: 副本数(默认3个副本)

      dfs.blocksize:每一个块的大小(1.x:64m, 2.x:128m)

      

      namenode的元数据存储的目录:

      <property>

          <name>dfs.namenode.name.dir</name>

          <value>/home/hadoop/hadoopdata/name</value>

       </property>

      datanode的block信息存储的目录:

        <property>

          <name>dfs.datanode.data.dir</name>

          <value>/home/hadoop/hadoopdata/data</value>

       </property>

      secondarynamenode的节点配置:

      <property>

          <name>dfs.secondary.http.address</name>

          <value>hdp03:50090</value>

       </property>

    

    * mapred-site.xml

      cp mapred-site.xml.template mapred-site.xml

      mapreduce做业运行的平台:

      <property>

          <name>mapreduce.framework.name</name>

          <value>yarn</value>

      </property>

 

    * yarn-site.xml

       <property>

          <name>yarn.resourcemanager.hostname</name>

          <value>hdp02</value>

        </property>

        <property>

          <name>yarn.nodemanager.aux-services</name>

          <value>mapreduce_shuffle</value>

        </property>

 

    * slaves(在哪一个节点上有    dn和nm)

      #namenode/ResourceManager --> master

      #datanode/NodeMnager --> slave

      hdp01

      hdp02

      hdp03 

   * 7.环境变量

       /etc/profile

       当前用户:

         ~/.bashrc

         ~/.bash_profile         

       export HADOOP_HOME=/home/hadoop/hadoop-2.7.7

       export PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin       

       source .bash_profile  刷新修改的环境变量

     * 8.发送到其余节点

 

       scp -r hadoop-2.7.7 hadoop@hdp02:~/

       scp -r .bash_profile hadoop@hdp02:~/

 

     * 9.hdfs集群(namenode)格式化

       hdfs namenode -format (只能格式化一次)

 

     * 10.启动集群

 

       1.逐个进程启动

         hadoop-daemon.sh start/stop namenode/datanode/secondarynamenode

         yarn-daemon.sh start/stop ResourceManager/NodeManager

       2.整个集群启动(涉及到通讯,ssh免密登陆)

         start-dfs.sh/stop-dfs.sh

         start-yarn.sh(必须在rm节点启动)/stop-yarn.sh

       3.所有启动

         start-all.sh/stop-all.sh

 

  * 11.成功检测

    1.jps  

    2.利用图形界面

     hdfs: http://hadoop01:50070

     yarn: http://hadoop03:8088

    3.运行任务

     hdfs: hdfs dfs -copyFromLocal input/ /   (/表示的是默认的路径,在此咱们默认是hdfs://hadoop01:50070/)

     yarn: hadoop jar hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input /output