数据管理技术HBase所处的的系统生态Hadoop
Posted Mirevas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据管理技术HBase所处的的系统生态Hadoop相关的知识,希望对你有一定的参考价值。
HBase概述
- HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库
- 是谷歌Big Table的开源实现,主要用来存储非结构化和半结构化的松散数据
Hadoop
-
Hadoop是什么
- Hadoop是一个开源的可运行于大规模集群上的分布式文件系统和运行处理基础框架
- Hadoop擅长于在廉价机器搭建的集群上进行海量数据(结构化与非结构化)的存储与离线处理。
- Hadoop就是一种用来处理大数据的技术,用来解决并行计算与分布式计算中的技术难题。
-
Hadoop的发展
-
HBase所处系统生态概况
- Hadoop是一个能够对大量数据进行分布式处理的软件框架
- 具有可靠、高效、可伸缩的特点
- Hadoop的核心是HDFS和Mapreduce
- HDFS是Hadoop分布式文件系统,用于将数据存储在Hadoop集群上。
- Mapreduce是为集群提供Mapreduce功能的YARN应用程序框架
- YARN是另一种资源管理器,它为集群提供所有的调度和资源管理
HDFS
-
Hadoop分布式文件系统即Hadoop Distributed File System
- 源自Google的GFS论文,HDFS是GFS开源版
- 是Hadoop体系中数据存储管理的基础。是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。
- HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能。适合带有大型数据集的应用程序。
-
HDFS组成部分
- Client:切分文件;访问HDFS;与NameNode交互,获取文件位置信息;与DataNode交互,读取和写入数据。
- NameNode:Master节点,在hadoop1.X中只有一个,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理客户端请求。
- DataNode:Slave节点,存储实际的数据,汇报存储信息给NameNode
- Secondary NameNode:辅助NameNode,分担其工作量;定期合并fsimage和fsedits,推送给NameNode;紧急情况下,可辅助恢复NameNode,但Secondary NameNode并非NameNode的热备份
-
HDFS架构
- Active NameNode:主Master(只有一个),管理HDFS的名称空间。管理数据块映射信息,配置副本策略;处理客户端读写请求。
- Secondary NameNode:NameNode的备份,当Active NameNode出现故障时,快速切换为新的Active NameNode
- Datanode:Slave(有多个);存储实际的数据块;执行数据块读/写
- Client:与NameNode交互,获取文件位置信息;与DataNode交互,读入或写入数据。
MapReduce
-
并行计算框架:MapReduce
- 一个处理和生成超大数据集的算法模型的相关实现
- 任务的分解与结果的汇总
-
程序员只要按照这个框架的要求,
- 设计Map和Reduce函数,分布式存储、节点调度、负载均衡、节点通讯、容错处理和故障和恢复等操作都由MapReduce框架自动完成
- 设计的程序有很高的扩展性
-
MapReduce程序流图
-
MapReduce实例:Wordcount
- 一批文件(规模为TB级或者PB级),如何统计这些文件中所有单词出现的次数
- 方案:首先,分别统计每个文件中单词出现的次数,然后累加不同文件中同一个单词出现的次数
-
MapReduce将作业的整个运行过程分为两个阶段
- Map阶段和Reduce阶段
- Map阶段由一定数量的Map Task组成
- 输入数据格式解析:InputFormat
- 输入数据处理:Mapper
- 数据分组:Partitioner
- Reduce阶段由一定数量的Reduce Task组成
- 数据远程拷贝
- 数据按照key排序
- 数据处理:Reducer
- 数据输出格式:OutputFormat
-
处理流程
- 读入数据:(key, value)对的记录格式数据
- Map:从每个记录里提取一些数据
- map(in_key, in_value) -> list(out_key, intermediate_value)
- 处理input key/ value pair
- 输出中间结果key/ value pairs
- Shuffle:混排交换数据,把相同key的中间结果汇集到相同节点上
- Reduce:aggregate, summarize, filter, etc
- reduce(out_key, list(intermediate_value)) -> list(out_value)
- 归并某一个key的所有values, 进行计算
- 输出合并的计算结果(usually just one)
- 输出结果
-
示例:Wordcount
-
输入:one document per record
-
用户实现map function,输入为
- key = document URL
- value = document contents
-
map输出(potentially many)key/ value pairs
- 对document中每一个出现的词,输出一个记录<word, “1”>
- 对document中每一个出现的词,输出一个记录<word, “1”>
-
MapReduce运行系统(库)把所有相同key的记录收集到一起(shuffle/sort)
-
用户实现reduce function对一个key对应的values计算
- 求和sum
- 求和sum
-
Reduce输出<key, sum>
-
Hive
- Hive(基于Hadoop的数据仓库)
- Hive由Facebook开源,最初用于解决海量结构化的日志数据统计问题
- Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行
- 通常用于离线分析
YARN
- 资源调度YARN(Yet Another Resource Negotiator)
- 应用程序框架是专门为YARN环境编写的应用程序
- YARN支持如下应用程序框架
- MapReduce
- Apache Giraph(图形处理)
- Apache Spark(内存中处理)
- Apache Storm(流处理)
- 其它应用程序
其它组件
- Zookeeper(分布式协作服务)
- 源自Google的Chubby论文,发表于2006年11月,Zookeeper是Chubby克隆版
- 解决分布式环境下的数据管理问题:状态同步,集群管理,配置同步等
- Sqoop(数据同步工具)
- Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之间传输数据
- 数据的导入/导出本质上是Mapreduce程序,充分利用了MR的并行化/容错性
- Pig(基于Hadoop的数据流系统)
- 由yahoo!开源,设计动机是提供一种基于MapReduce的ac-hoc(计算在query时发生)数据分析工具
- 通常用于进行离线分析
HBase和BigTable的底层技术对应关系
以上是关于数据管理技术HBase所处的的系统生态Hadoop的主要内容,如果未能解决你的问题,请参考以下文章
hadoop生态系统学习之路hbase与hive的数据同步以及hive与impala的数据同步