zoukankan      html  css  js  c++  java
  • Hadoop

    一、大数据相关概念

    Bigdata:

    • 结构化数据
    • 半结构化数据
    • 非结构化数据

    搜索引擎:搜索组件、索引组件,由蜘蛛程序搜集而来

    存储平台

    分析处理平台

    Google:

    • 2003年:The Google File System
    • 2004年:MapReduce:Simplified Data Proccessing On Large Cluster
    • 2006年:BigTable:A Distributed Storage System for Structure Date

    Hadoop:HDFS + MapReduce

    HBase

    • HDFS
      • NameNode 名称节点
      • DataNode 数据节点
      • SNN:Secondary NameNode 辅助名称节点
    • MapReduce
      • JobTracker
      • TaskTracker

    二、函数式编程

    • Lisp,ML函数式编程语言:高阶函数
      • map:把一个任务映射为多个;接受一个函数为参数,并将其应用于列表中的所有元素
      • fold:接受俩个参数,函数、初始值,不断将前一个结果和后一个函数做处理,来实现数据结果折叠
    • mapper:同一个键只能发往同一个reducer
    • reducer:将mapper处理的结果reducer

    三、hadoop组件

    • MRv1(Hadoop2) -- MapReduce
      • Pig
      • Hive
    • MRv2(Hadoop2)
      • YARN
        • Tez:execution engine
          • MR:bateh
          • Pig:data flow
          • Hive:sql
        • RM:Resource Manager
        • NM:Node Manager
        • AM:Application Master
        • container:mr任务

    四、Hadoop部署

    1. 单机模型:测试使用
    2. 伪分布式模型:运行于单机
    3. 分布式模型:集群模型

    hadoop-2.6.2:jdk-1.6以上

    hadoop-2.7

    一、伪分布式模型部署示例:

    CentOS:7.5

    JDK:1.7.0_171

    hadoop:2.6.5

    • 配置基础环境
    # yum install java-1.7.0-openjdk.x86_64 -y
    # yum install java-1.7.0-openjdk-devel.x86_64 -y
    # vim /etc/profile.d/java.sh
    export JAVA_HOME=/usr
    # wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz
    # mkdir /bdapps
    # tar xf hadoop-2.6.5.tar.gz -C /bdapps/
    # cd /bdapps/
    # ln -sv hadoop-2.6.5 hadoop
    # vim /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_MAPPERD_HOME=${HADOOP_PREFIX}
    export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
    export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
    # . /etc/profile.d/hadoop.sh
    
    • 创建运行Hadoop进程的用户和相关目录
    ~]# 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/
    hadoop]# mkdir logs
    hadoop]# chmod g+w logs
    hadoop]# chown -R yarn:hadoop ./*
    
    • 配置hadoop
    hadoop]# vim etc/hadoop/core-site.xml  #core-site.xml文件包含了NameNode主机地址以及其监听RPC端口等信息,对于伪分布式模型的安装来说,其主机地址伪localhost。NameNode默认使用的RPC端口伪8020。其简要的配置内容如下:
    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:8020</value>
            <final>true</final>
        </property>
    </configuration>
    
    hadoop]# vim etc/hadoop/hdfs-site.xml  #hdfs-site.xml主要用于配置HDFS相关属性,例如复制因子(即数据块的副本数)、NN和DN用于存储数据的目录等。数据块的副本数对于伪分布式的Hadoop应该为1,而NN和DN用于存储的数据目录为前面的步骤中专门为其创建的路径。另外,前面的步骤中也为SNN创建了相关的目录,这里也一并配置其为启用状态。
    <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>
    
    注意:如果需要其他用户对hdfs有写入权限,还需要在此文件中添加一项属性定义。
        <property>
            <name>dfs.permissions</name>
            <value>false</value>
        </property>
    
    hadoop]# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
    hadoop]# vim etc/hadoop/mapred-site.xml  #mapred-site.xml文件用于配置集群的MapReduce framework,此处应该指定使用yarn,另外的可用值还有local和classic。mapred-site.xml默认不存在,但有模板文件mapred-site.xml.template,只需要将其复制mapred-site.xml即可。
    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    
    hadoop]# vim etc/hadoop/yarn-site.xml  #yarn-site.xml用于配置YARN进程及YARN的相关属性。首先需要指定ResourceManager守护进程的主机和监听的端口,对于伪分布式模型来说,其主机伪localhost,默认的端口为8032;其次需要指定ResourceManager使用的scheduler,以及NodeManager的辅助服务。示例如下:
    <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>
    
    • 格式化HDFS
    ~]# su - hdfs
    ~]$ hdfs namenode -format  #显示输出successfully formatted表示格式化成功
    
    • 启动
    ~]# su - hdfs
    ~]$ hadoop-daemon.sh start namenode
    ~]$ hadoop-daemon.sh start secondarynamenode
    ~]$ hadoop-daemon.sh start datanode
    ~]$ jps  #查看java进程,看NameNode是否启动
    
    ~]# su - yarn
    ~]$ yarn-daemon.sh start resourcemanager
    ~]$ yarn-daemon.sh start nodemanager
    ~]$ jps
    

    RMUI

    HDFS: http://192.168.0.12:50070

    YARN: http://localhost:8088/cluster

    • 测试
    ~]# su - hdfs
    ~]$ yarn jar /bdapps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /test/fstab /test/fatab.out  #统计文件中每个单词出现的次数
    ~]$ hdfs dfs -ls /test/fatab.out/
    ~]$ hdfs dfs -cat /test/fatab.out/part-r-00000  #统计结果
    

    五、hdfs命令

    ~]$ hdfs dfs -mkdir /test
    ~]$ hdfs dfs -ls /
    ~]$ hdfs dfs -put /etc/fstab /user/hdfs/fstab
    ~]$ hdfs dfs -put /etc/fstab /test/fstab
    ~]$ hdfs dfs -ls -R /
    ~]$ hdfs dfs -cat /test/fstab
    ~]$ hdfs dfs -df -h
    
  • 相关阅读:
    UIView动画效果之----翻转.旋转.偏移.翻页.缩放.取反的动画效
    iOS Runloop 消息循环
    Objective-C Fast Enumeration
    Obj-C Memory Management
    设计模式
    查找算法(顺序查找、二分法查找、二叉树查找、hash查找)
    设计模式
    Objective-C Operators and Expressions
    Objective-C Numbers
    HDU 1828 Picture(线段树扫描线求周长)
  • 原文地址:https://www.cnblogs.com/L-dongf/p/10094178.html
Copyright © 2011-2022 走看看