hadoop由浅入深

1.  大数据

    结构化数据:  数据库数据

    半结构化数据:  html,xml,json

    非结构化数据:  日志,没有元数据

    搜索引擎:  搜索组件  索引组件

      蜘蛛程序

      存储

      分析处理

        HDFS+MapReduce=Hadoop

      批处理

2.  Hadoop Distribution  

    分发版本

    Cloudera:  CDH

    Hortonworks:  HDP

    Intel:  IDH

3.  Hadoop:存储和处理平台

    hdfs:  集群:  NN(名称节点) SNN(第二名称节点) DN(数据节点)

    mapreduce:  集群:  JobTracker,  TaskTracker

      JT:  集群资源管理和作业管理

      TT:  执行任务

    YARN:  

      RM

      NM

      AM

      container

4.  Hadoop模型

    1.  单机模型  测试使用

    2.  伪分布式模型  运行于单机

    3.  集群模型

    4.  hadoop官网  https://hadoop.apache.org

5.  伪分布式模型

    1.  安装jdk1.8

        yum install java-1.8.0-openjdk.x86_64

        yum install java-1.8.0-openjdk-devel.x86_64
        yum install java-1.8.0-openjdk-headless.x86_64

        vi /etc/profile.d/java.sh

        export JAVA_HOME=/usr

        . /etc/profile.d/java.sh

    2.  下载hadoop程序包

        hadoop-2.6.2  jdk 1.6+

        hadoop-2.7  jdk 1.7+

        wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

    3.  安装hadoop

        创建安装目录

        mkdir /bdapps

        解压hadoop文件到安装目录

        tar -zxvf hadoop-2.7.7.tar.gz -C /bdapps/

        创建软链接

        cd /bdapps

        ln -sv hadoop-2.7.7 hadoop

        设置环境变量

        vi /etc/profile.d/hadoop.sh

export HADOOP_PREFIX=/bdapps/hadoop
export PATH=$PATH:${HADOOP_PREFIX}/bin:${HADOOP_PREFIX}/sbin
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_MAPPRED_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}

        运行一下

        . /etc/profile.d/hadoop.sh

        创建用户和组

        groupadd hadoop

        useradd -g hadoop yarn

        useradd -g hadoop hdfs

        useradd -g hadoop mapred

        创建数据目录

        mkdir -pv /data/hadoop/hdfs/{nn,snn,dn}

        chown -R hdfs.hadoop /data/hadoop/hdfs

        创建日志目录

        cd /bdapps/hadoop

        mkdir logs

        chmod g+w logs

        chown yarn.hadoop ./*

        编写hadoop的配置文件

        /bdapps/hadoop/etc/hadoop/core-site.xml  用来指定运行的namenode的地址和端口,对于伪分布式模型来说,主机地址为localhost,namenode默认使用的端口是8020。内容如下:

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:8020</value>
    <final>true</final>
  </property>
</configuration>

        /bdapps/hadoop/etc/hadoop/hdfs-site.xml  主要用于配置HDFS相关的属性,例如复制因子,NN和DN用于存储数据的目录。伪分布式的数据副本数为1。

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///data/hadoop/hdfs/nn</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///data/hadoop/hdfs/dn</value>
  </property>
  <property>
    <name>fs.checkpoint.dir</name>
    <value>file:///data/hadoop/hdfs/snn</value>
  </property>
  <property>
    <name>fs.checkpoint.edits.dir</name>
    <value>file:///data/hadoop/hdfs/snn</value>
  </property>
</configuration>

        /bdapps/hadoop/etc/hadoop/mapred-site.xml  用于配置集群的mapreduce framework,此处应该指定yarn,另外的可用猴子还有local和classic。  

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

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

        /bdapps/hadoop/etc/hadoop/yarn-site.yml  用于配置YARN进程及YARN的相关属性,首先需要指定RM守护进程的主机和监听的端口,对于伪分布式模型,主机为localhost,          

<configuration>
  <property>
    <name>yarn.resourcemanager.address</name>
    <value>localhost:8032</value>
  </property>
  <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>localhost:8030</value>
  </property>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>localhost:8031</value>
  </property>
  <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>localhost:8033</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>localhost:8088</value>
  </property>
  <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.scheduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
  </property>
</configuration>

        /bdapps/hadoop/etc/hadoop/hadoop-env.sh和/bdapps/hadoop/etc/hadoop/yarn-env.sh,之前配置了JAVA_HOME环境变量,这两处不需要配置。

        /bdapps/hadoop/etc/hadoop/slaves  存储当前集群的所有slave节点,对于伪分布式集群,其内容为localhost。

        

        格式化HDFS

        在HDFS的NN启动之前需要先初始化用于存储数据的目录。使用之前创建的用户hdfs,进行格式化。

        hdfs namenode -format

        显示结果中:/data/hadoop/hdfs/nn has been successfully formatted.  表示格式化完成了。

        

        启动hadoop

        1.  启动hdfs的三个服务

            使用hdfs用户,启动三个服务

            hadoop-daemon.sh start namenode

            会产生日志文件:/bdapps/hadoop/logs/hadoop-hdfs-namenode-node2cp.log

            使用jps命令,查看一下java进程

            

            hadoop-daemon.sh start secondarynamenode

            会产生日志文件:/bdapps/hadoop/logs/hadoop-hdfs-secondarynamenode-node2cp.log

 

            hadoop-daemon.sh start datanode

            会产生日志文件:/bdapps/hadoop/logs/hadoop-hdfs-datanode-node2cp.log

 

        2.  启动yarn集群的两个服务

            切换到yarn用户,启动resourcemanager服务。

            yarn-daemon.sh start resourcemanager

            启动nodemanager服务

            yarn-daemon.sh start nodemanager

        

        运行测试程序

          su - hdfs

          yarn jar /bdapps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar   wordcount /test/fstab /etc/fstab.out    

          hdfs dfs -cat /etc/fstab.out/part-r-00000  查看运行测试后的结果  

 

    6.  验证服务是否启动成功

        hadoop version  查看hadoop版本

        hdfs dfs -mkdir /test

        hdfs dfs -put /etc/fstab /test/fstab

        hdfs dfs -ls /test

        警告信息:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

        处理方法:          

在//usr/local/hadoop-2.5.2/etc/hadoop/log4j.properties文件中添加
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR

        查看真实对应的文件:  data/hadoop/hdfs/dn/current/BP-1504412268-192.168.1.139-1467344833938/current/finalized/subdir9/subdir146/blk_1074369142

    7.  hadoop集群有两个web接口

        master节点

        master_ip:50070

        master_ip:8088

7.  hdfs命令使用

8.  yarn管理命令使用

    yarn resouremanager

    yarn nodemanager

    yarn jar

    yarn application

    

  

 

                            

  

        

        

 

 

            

            

 

 

 

            

            

            

  

            

                      

 

    

        

                

        

                

                 

                

          

        

                

                

                        

         

                     

    

    

 

posted @ 2019-02-18 09:03  奋斗史  阅读(138)  评论(0)    收藏  举报