【问】hadoop在生产环境下综合斟酌的的数据块副本数多少
1. hadoop 生态概况
Hadoop是1个由Apache基金会所开发的散布式系统基础架构。
用户可以在不了解散布式底层细节的情况下,开发散布式程序。充分利用集群的威力进行高速运算和存储。
具有可靠、高效、可伸缩的特点。
Hadoop的核心是YARN,HDFS和Mapreduce
下图是hadoop生态系统,集成spark生态圈。在未来1段时间内,hadoop将于spark共存,hadoop与spark
都能部署在yarn、mesos的资源管理系统之上
下面将分别对以上各组件进行扼要介绍,具体介绍参见后续系列博文。
源自于Google的GFS论文,发表于2003年10月,HDFS是GFS克隆版。
HDFS是Hadoop体系中数据存储管理的基础。它是1个高度容错的系统,能检测和应对硬件故障,用于在低本钱的通用硬件上运行。
HDFS简化了文件的1致性模型,通过流式数据访问,提供高吞吐量利用程序数据访问功能,合适带有大型数据集的利用程序。
它提供了1次写入屡次读取的机制,数据以块的情势,同时散布在集群不同物理机器上。
源自于google的MapReduce论文,发表于2004年12月,Hadoop MapReduce是google MapReduce 克隆版。
MapReduce是1种散布式计算模型,用以进行大数据量的计算。它屏蔽了散布式计算框架细节,将计算抽象成map和reduce两部份,
其中Map对数据集上的独立元素进行指定的操作,生成键-值对情势中间结果。Reduce则对中间结果中相同“键”的所有“值”进行规约,以得到终究结果。
MapReduce非常合适在大量计算机组成的散布式并行环境里进行数据处理。
4. HBASE(散布式列存数据库)
源自Google的Bigtable论文,发表于2006年11月,HBase是Google Bigtable克隆版
HBase是1个建立在HDFS之上,面向列的针对结构化数据的可伸缩、高可靠、高性能、散布式和面向列的动态模式数据库。
HBase采取了BigTable的数据模型:增强的稀疏排序映照表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。
HBase提供了对大范围数据的随机、实时读写访问,同时,HBase中保存的数据可使用MapReduce来处理,它将数据存储和并行计算完善地结合在1起。
5. Zookeeper(散布式协作服务)
源自Google的Chubby论文,发表于2006年11月,Zookeeper是Chubby克隆版
解决散布式环境下的数据管理问题:统1命名,状态同步,集群管理,配置同步等。
Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。
6. HIVE(数据仓库)
由facebook开源,最初用于解决海量结构化的日志数据统计问题。
Hive定义了1种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上履行。通经常使用于离线分析。
HQL用于运行存储在Hadoop上的查询语句,Hive让不熟习MapReduce开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的MapReduce任务。
7.Pig(ad-hoc脚本)
由yahoo!开源,设计动机是提供1种基于MapReduce的ad-hoc(计算在query时产生)数据分析工具
Pig定义了1种数据流语言—Pig Latin,它是MapReduce编程的复杂性的抽象,Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin)。
其编译器将Pig Latin翻译成MapReduce程序序列将脚本转换为MapReduce任务在Hadoop上履行。通经常使用于进行离线分析。
8.Sqoop(数据ETL/同步工具)
Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。
Sqoop利用数据库技术描写数据架构,用于在关系数据库、数据仓库和Hadoop之间转移数据。
9.Flume(日志搜集工具)
Cloudera开源的日志搜集系统,具有散布式、高可靠、高容错、易于定制和扩大的特点。
它将数据从产生、传输、处理并终究写入目标的路径的进程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持搜集各种不同协议数据。
同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。另外,Flume还具有能够将日志写往各种数据目标(可定制)的能力。
总的来讲,Flume是1个可扩大、合适复杂环境的海量日志搜集系统。固然也能够用于搜集其他类型数据
Mahout起源于2008年,最初是Apache Lucent的子项目,它在极短的时间内获得了长足的发展,现在是Apache的顶级项目。
Mahout的主要目标是创建1些可扩大的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能利用程序。
Mahout现在已包括了聚类、分类、推荐引擎(协同过滤)和频繁集发掘等广泛使用的数据发掘方法。
除算法,Mahout还包括数据的输入/输出工具、与其他存储系统(如数据库、MongoDB 或Cassandra)集成等数据发掘支持架构。
11. Oozie(工作流调度器)
Oozie是1个可扩大的工作体系,集成于Hadoop的堆栈,用于调和多个MapReduce作业的履行。它能够管理1个复杂的系统,基于外部事件来履行,外部事件包括数据的定时和数据的出现。
Oozie工作流是放置在控制依赖DAG(有向无环图 Direct Acyclic Graph)中的1组动作(例如,Hadoop的Map/Reduce作业、Pig作业等),其中指定了动作履行的顺序。
Oozie使用hPDL(1种XML流程定义语言)来描写这个图。
12. Yarn(散布式资源管理器)
- 资源管理:包括利用程序管理和机器资源管理
- 资源双层调度
- 容错性:各个组件均有斟酌容错性
- 扩大性:可扩大到上万个节点
13. Mesos(散布式资源管理器)
Mesos诞生于UC Berkeley的1个研究项目,现已成为Apache项目,当前有1些公司使用Mesos管理集群资源,比如Twitter。
与yarn类似,Mesos是1个资源统1管理和调度的平台,一样支持比如MR、steaming等多种运算框架。
14. Tachyon(散布式内存文件系统)
Tachyon(/'tæki:ˌɒn/ 意为超光速粒子)是之内存为中心的散布式文件系统,具有高性能和容错能力,
能够为集群框架(如Spark、MapReduce)提供可靠的内存级速度的文件同享服务。
Tachyon诞生于UC Berkeley的AMPLab。
15. Tez(DAG计算模型)
Tez是Apache最新开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进1步拆分,
即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,
这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过1些控制程序组装后,可构成1个大的DAG作业。
目前hive支持mr、tez计算模型,tez能完善2进制mr程序,提升运算性能。
16. Spark(内存DAG计算模型)
Spark是1个Apache项目,它被标榜为“快如闪电的集群计算”。它具有1个繁华的开源社区,并且是目前最活跃的Apache项目。
最早Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架。
Spark提供了1个更快、更通用的数据处理平台。和Hadoop相比,Spark可让你的程序在内存中运行时速度提升100倍,或在磁盘上运行时速度提升10倍
17. Giraph(图计算模型)
Apache Giraph是1个可伸缩的散布式迭代图处理系统, 基于Hadoop平台,灵感来自 BSP (bulk synchronous parallel) 和 Google 的 Pregel。
最早出自雅虎。雅虎在开发Giraph时采取了Google工程师2010年发表的论文《Pregel:大范围图表处理系统》中的原理。后来,雅虎将Giraph捐赠给Apache软件基金会。
目前所有人都可以下载Giraph,它已成为Apache软件基金会的开源项目,并得到Facebook的支持,取得多方面的改进。
18. GraphX(图计算模型)
Spark GraphX最早是伯克利AMPLAB的1个散布式图计算框架项目,目前整合在spark运行框架中,为其提供BSP大范围并行图计算能力。
19. MLib(机器学习库)
Spark MLlib是1个机器学习库,它提供了各种各样的算法,这些算法用来在集群上针对分类、回归、聚类、协同过滤等。
20. Streaming(流计算模型)
Spark Streaming支持对流数据的实时处理,以微批的方式对实时数据进行计算
21. Kafka(散布式消息队列)
Kafka是Linkedin于2010年12月份开源的消息系统,它主要用于处理活跃的流式数据。
活跃的流式数据在web网站利用中非常常见,这些数据包括网站的pv、用户访问了甚么内容,搜索了甚么内容等。
这些数据通常以日志的情势记录下来,然后每隔1段时间进行1次统计处理。
22. Phoenix(hbase sql接口)
Apache Phoenix 是HBase的SQL驱动,Phoenix 使得Hbase 支持通过JDBC的方式进行访问,并将你的SQL查询转换成Hbase的扫描和相应的动作。
23. ranger(安全管理工具)
Apache ranger是1个hadoop集群权限框架,提供操作、监控、管理复杂的数据权限,它提供1个集中的管理机制,管理基于yarn的hadoop生态圈的所有数据权限。
24. knox(hadoop安全网关)
Apache knox是1个访问hadoop集群的restapi网关,它为所有rest访问提供了1个简单的访问接口点,能完成3A认证(Authentication,Authorization,Auditing)和SSO(单点登录)等
25. falcon(数据生命周期管理工具)
Apache Falcon 是1个面向Hadoop的、新的数据处理和管理平台,设计用于数据移动、数据管道调和、生命周期管理和数据发现。它使终端用户可以快速地将他们的数据及其相干的处理和管理任务“上载(onboard)”到Hadoop集群。
26.Ambari(安装部署配置管理工具)
Apache Ambari 的作用来讲,就是创建、管理、监视 Hadoop 的集群,是为了让 Hadoop 和相干的大数据软件更容易使用的1个web工具。
参考文献:
Hadoop生态系统介绍 http://blog.csdn.net/qa962839575/article/details/44256769?ref=myread
大数据和Hadoop生态圈,Hadoop发行版和基于Hadoop的企业级利用 http://www.36dsj.com/archives/26942
Oozie介绍 http://blog.csdn.net/wf1982/article/details/7200663
统1资源管理与调度平台(系统)介绍 http://blog.csdn.net/meeasyhappy/article/details/8669688
Tachyon简介http://blog.csdn.net/u014252240/article/details/41810849
Apache Tez:1个运行在YARN之上支持DAG作业的计算框架 http://segmentfault.com/a/1190000000458726
Giraph:基于Hadoop的开源图形处理平台 http://tech.it168.com/a2013/0821/1523/000001523700.shtml
Hadoop家族学习线路图 http://blog.fens.me/hadoop-family-roadmap/
基于Spark的图计算框架 GraphX 入门介绍 http://www.open-open.com/lib/view/open1420689305781.html
Apache Spark 入门简介 http://blog.jobbole.com/89446/
Ambari——大数据平台的搭建利器 http://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/index.html
消息系统Kafka介绍 http://dongxicheng.org/search-engine/kafka/
使用Apache Phoenix 实现 SQL 操作HBase http://www.tuicool.com/articles/vu6jae
面向Hadoop的、新的数据处理和管理平台:Apache Falcon http://www.open-open.com/lib/view/open1422533435767.html
上一篇 谈谈MySQL的存储引擎