zoukankan      html  css  js  c++  java
  • hadoop基础学习

    MR系类:

    hadoop生态

    >MapReduce:分布式处理

    >Hdfs:hadoop distribut file system

    >其他相关框架

    ->unstructured data:收集日志 flume,scribe

    ->structured data:sqoop hdfs与关系型数据库相互转换

    ->OLTP:HBASE(低延时) online transection process

    ->monitor/manage:监控集群状态

    ->Hight level interfaces:JAQL HIVE

    ->support:

    ->workflow:

    ->more Hight level interfaces:封装了算法的高级接口 数据挖掘算法BI

    hadoop:分布式存储和计算平台

    hadoop核心系统:

    >hdfs:

    ->主从分布式:

    namenode(主节点):管理从节点,提供API,管理文件与block,blockdatanode之间的关系。(存储单位为block

    datanode(从节点):存储数据,文件被分成block存储在磁盘,同时block是有副本的。

    >mapReduce:

    ->主从分布式:

    jobTracker(主节点):提供api,分配任务给tasktracker,监控其执行情况

    taskTracker(从节点):执行分配的计算任务。

    hadoop分布式特点:

    >扩容能力:

    >成本低:低廉主机,团体集群。

    >高效率:并行执行

    >可靠性:自动维护数据副本

    hadoop集群:

    >伪分布:

    ①安装jdkhadoop软件

    >真实分布:

    HDFS学习笔记:

    >概念:

    ->dfs:分布式文件系统,适合于一次写入多次查询的情况,不支持并发写,不适合小文件。

    ->namenode:维护和管理目录系统,

    ->HDFS:

    ->namenode:元数据(目录数据)

    ->fsimage:目录数据

    ->edit:用户操作的事务,当事务完成后,会将新的目录数据加入fsimage.

    ->secondaryNode:合并fsimageedit

    ->datanode:物理数据(原始数据):物理数据本身

    ->文件块block:默认大小64M,当不足64M时,占用实际的大小的物理空间。

    ->replication:副本,默认三个。优先放在本机的datanode中。

    ->关于HDFSHA

    ->在配置文件中设置多个namenodecopy

    ->secondaryNode:将edit合并到fsimage

    >shell接口:

    ->hadoop fs 命令 -ls,-lsr,-put,-get,-text

    ->hadoop fs ls = hadoop fs -ls hdfs://hadoop:9000/

    >java接口:

    ->IOUtil连接普通文件系统和HDFS

    ->FileSystemhds中定义的文件系统对象

    >RPC远程过程调用:Remote process call 不同进程间的方法调用

    ->客户端调用服务器端实现VersionedProtocol协议的接口中的方法。

    ->hadoop中存在的5的服务进程,就是RPC的服务器端

     The NameNode controls two critical tables:

        1)  filename->blocksequence (namespace) 外存中,静态的,存放在fsimage

        2)  block->machinelist ("inodes") 内存中,namenode启动的时候重建。

    hdfs的唯一一个核心类:FileSystem

    MapReduce:

    八个步骤:

    1>Map

    1.1>解析hdfs中的文件,每行数据形成<k1,v1> :k1为每行开始位置,v1为每行的内容

    1.2>覆盖map(),接受1.1产生的<k1,v1>进行处理,转换成新的<k2,v2> :如对每行的数据即v1进行拆分,就可以得到多个v2

    1.3>1.2中输出的数据<k2,v2>进行分区,默认为1个:

    1.4>1.3中输出的数据<k3,v3>进行排序(按照k3),分组(相同key的不同value放在一个集合中),输出<k4,{v4}>

    1.5>1.4中输出的数据进行规约。

    2>Reduce

    2.1>多个map任务的输出,按照不同的分区,通过网络 copy到不同的reduce节点中:

    2.2>2.1中获得的数据,进行合并排序,覆盖reduce函数,接受集合数据,统计k4对应集合中所有值的和,输出<k5,v5>:

    2.3>2.2中产生的<k5,v5>的输出,写回hdfs中。

    Hadoop数据类型:

    Hadoop key/value数据必须实现的接口:

    writeable接口:

    public interface Writable {

       * Serialize the fields of this object to <code>out</code>.

      void write(DataOutput out) throws IOException;

       * Deserialize the fields of this object from <code>in</code>.  

      void readFields(DataInput in) throws IOException;

    }

    Hadoop key数据必须实现的接口:

    Comparable接口:

    WritableComparable接口:

    comparaTo()方法

    1>序列化和反序列化必须实现一下几个方法:

    equals()

    hashcode()

    tostring()

    ④必须有无参构造方法,为了方便反射创建对象。

    2>序列化:将结构化对象转化为字节流,以便在网络传输或者保存在磁盘进行永久存储。

    ·反序列化:将序列化字节流,反序列化为结构化对象。

    为了实现对序列化字节对象的直接比较,

    comparator接口:

  • 相关阅读:
    js(四) 全选/全不选和反选
    js(三) ajax异步局部刷新技术底层代码实现
    js(二) 实现省市联动(json)
    接口
    内部类
    封装
    Static关键字
    this关键字
    带参数的方法
    abstract关键字
  • 原文地址:https://www.cnblogs.com/cz-blog/p/5912219.html
Copyright © 2011-2022 走看看