Hadoop生态圈学习记录

来源:互联网 发布:淘宝排名怎么靠前 编辑:程序博客网 时间:2024/06/02 22:43

Hadoop生态圈

unstructured data类型:文本、交互数据、图像、音频、视频

structured data:即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据

semi-structured data:结构化数据,但结构变化很大





2015.07.24



1.HDFS(分布式文件系统)详见:点击打开链接 官网文档

功能:主要负责数据的分布式存储,具有高容错性,且设计为部署在低廉硬件上

能够提供高吞吐量的数据访问,适用于拥有大数据集的应用

释放了少量POSIX要求,使得可以进行流式数据访问。


假设与目标:硬件错误:存在是正常的,目的在检错与快速自动恢复,系统瞬时可由成百上千的主机组成

流式数据访问:批处理而非交互式,高吞吐量而非低延迟数据访问

大数据集:可至PB级,瞬间可处理成千上万的文件

数据一致性:仅写一次读多次,不支持追加写入

移动计算:将计算移动到离数据存储近的地方,提高系统总吞吐量

可移植性:易跨平台使用

数据复制:数据被分成一系列块,除最后一块其他的大小均相等。这些块被复制用于容错

大量小文件存储占用空间

JAVA


2.Mapreduce/YARN(分布式计算框架)官方文档 新旧对比

功能:能在集群上可靠的、高容错的并行写入含有大量数据的应用的软件框架。

    将输入的数据集分成块,发送给计算点(节点)并行进行处理,然后框架进行合并整合

    框架负责安排、监测任务并重新执行失败的任务(对分析进行控制,而不是分析本身)

YARN:资源管理和任务调度 / 监控分离

框架:a. 一个全局的资源管理器 ResourceManager(包括Scheduler and ApplicationsManager

    b.ResourceManager的每个节点代理 NodeManager
    c. 表示每个应用的 ApplicationMaster
    d. 每一个ApplicationMaster拥有多个Container在NodeManager上运行
    e.资源分配单位为container(动态资源分配单位,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量)




MR与HDFS运行在同一节点集上,保证架构对任务进行有效安排

不必用JAVA写


3.HBase(分布式列存储系统)官方文档

功能:基于HDFS,高可靠性、高性能、面向列、可伸缩,提供对大表格快速记录查询及更新的分布式存储系统

    适合于非结构化数据存储,主要用于海量结构化数据存储的数据库,基于列模式

    在HBase中,数据被存放在有行和列的表里,可看做多维的图


HBase是为了支持弥补Hadoop对实时操作的缺陷的项目


当有成千上万或数以亿计的行时,可以选用HBase,否则用传统RDBMS比较好

需要至少5个DataNode和1个NameNode

   

关系: HBase位于结构化存储层

     HDFS为HBase提供了高可靠性的底层存储支持

     MapReduce为HBase提供了高性能的计算能力

     Zookeeper为HBase提供了稳定服务和failover机制

 


4.Hive(数据仓库)官方文档

功能:基于Hadoop,用于查询和管理大数据集的数据仓库工具,为了减少MapReduce jobs编写工作

    易于对数据进行extract/transform/load(ETL)

    ?A mechanism to impose structure on a variety of data formats 

    可以存储、查询和分析存储在HDFS(或者HBase)中的大规模数据的机制

    可以用MR进行查询

    使用类SQL语言进行查询(QL),允许MR开发者开发自定义mapper和reducers,允许用户编写自定义函数

     无专门的数据格式

     不适合那些需要低延迟的应用,如联机事务处理(OLTP)不提供实时的查询和基于行级的数据更新操作

     最佳使用场合是大数据集的批处理作业,例如,网络日志分析 离线数据分析

     查询操作过程严格遵守Hadoop MapReduce 的作业执行模型,Hive 将用户的HiveQL 语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上,Hadoop 监控作业执行过程,然后返回作业执行结果给用户


5.Pig(基于Hadoop的数据流系统)官方文档

功能:Pig是一个基于Hadoop的大规模数据分析平台

    提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算


Pig相比Hive相对轻量,它主要的优势是相比于直接使用Hadoop Java APIs可大幅削减代码量。


Hive和Pig为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单



6.Mahout(数据挖掘算法库)

功能:创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。

Mahout现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。除了算法,Mahout还包含数据的输入/输出工具、与其他存储系统(如数据库、MongoDB 或Cassandra)集成等数据挖掘支持架构。


7.ZooKeeper(分布式协作服务)官方文档

功能:为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务

    被设计用于存储子进程协调数据:状态信息、配置、位置信息等等

    给clients提供高吞吐量、低延迟、高可变性、严格顺序对znodes进行存取

    每个znode可以有数据与之关联且每个znode能包含的数据量是受限的

    提供JAVA和C接口

原理

HBase内置有ZooKeeper,也可以使用外部ZooKeeper。


8.Tez(分布式执行框架)官方文档   介绍

功能:基于YARN,支持DAG作业的开源计算框架,将多个有依赖的作业转换为一个作业从而大幅提升DAG作业的性能


9.sqoop(数据库ETL工具)

功能:将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

缺点:有特定数据库的限制,没有驱动支持从视图的导入


10.flume(日志收集工具)

功能:高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。


11.spark

12.ambari

0 0
原创粉丝点击