以下内容来自互联网,仅供学习

CHD:
大数据平台CDH,Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”),基于Web的用户界面,支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop,简化了大数据平台的安装、使用难度

Hadoop:
Hadoop被称为一个“生态”,比如:大数据相关岗位招聘要求上一般都有写熟悉Hadoop生态。相关的软件项目繁多,通常情况下,大家说的Hadoop,指的是提供海量数据存储能力的HDFS,管理大量机器运算资源的Yarn以及一个编程框架MapReduce
有了这些工具,普通水平的程序员也可以轻松处理TB级别的数据。

Hive:
Hive的出现是为了自动化编写MapReduce程序。根据上面的介绍,基于Mrv2的计算框架,我们实现相应的Mapper,Reducer后就可以提交运行,然后通过Yarn的调度,执行完这个MapReduce程序。
但是一个Mapper、一个Reducer的能力有限,完成一个实际业务目的可能需要很多个步骤,比如对一个大的数据集,首先通过某个字段筛选出想要的行,然后根据另一个字段分组统计,最后再对结果进行排序。这些功能逐个通过Mapreduce实现就比较繁琐了,并且对不同的数据集,处理方式可能类似,都是筛选、分组统计、排序等相似的功能。我们可以通过熟悉的SQL语句来描述需要对数据进行的处理,然后通过hive里的引擎把sql转换成一个或多个mapreduce任务并调度执行,这就大大减少了相似的mapreduce编写工作,提高了效率。

Spark:Spark被认为是第二代大数据处理框架。第一代框架是基于简单的Map Reduce模型的,第一代计算框架和运算的基础,也就是分布式文件系统和分布式资源管理系统一起被创建出来。Spark沿用现有的分布式文件系统和分布式资源管理系统,在计算模型方面有很大的创新。
上面提到Hive可以把sql语句转成多个Mapreduce任务并执行,这和逐个实现Mapper Reducer相比有很大的效率提升;Spark是改进了Mrv2运算模型,首先向上层用户提供更多的算子来表达业务逻辑,底层则把每次任务转换成DAG图,对DAG图进行物理运算的时候,更多地利用内存来缓存,减少JVM的启停次数等,通过这些方法大大提高了数据处理速度。
Spark的生态也很完善,比如Spark Sql,Spark Streaming,Spark MLlib等

Flink:
Flink很长一段时间被Spark的光环掩盖,Flink的特点是实时流计算(Spark Streaming可以轻松做到秒级别的实时计算),把实时计算提到了更高的优先级。
Flink充分考虑事件的时间属性,通过WaterMark等机制,可以实时准确地完成完成流式计算,轻松实现CEP等功能,把批计算当成流计算的一种特例。
Flink像Spark一样,也可以部署到Yarn上,可以用HDFS作为分布式存储

HBase:
HBase是一个分布式noSql数据库,是google的bigtable论文的开源实现。
HBase可以被理解成一个打的Map数据结构,类似Map<primarkey, map<key, value>>这种。但是它自动地处理海量数据存储的扩展,通过增加或减少机器来改变数据库的容量限制。HBase底层依赖HDFS来实现数据的高可用性,hbase集群由HMaster和HregionServer组成,这两个组件可以独立部署到集群上,也可以部署到Yarn上。
HBase也是Hadoop家族的成员,所以它对Mrv2,Hive的支持很好,可以作为它们的数据源或者结果存储位置;作为Mrv2数据源的时候,Hbase可以提供在HDFS上的位置信息,实现高效的并行计算

Kafka:
一种中间件,Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

粗暴解释中间件:

举个例子,生产者消费者,生产者生产鸡蛋,消费者消费鸡蛋,生产者生产一个鸡蛋,消费者就消费一个鸡蛋,假设消费者消费鸡蛋的时候噎住了(系统宕机了),生产者还在生产鸡蛋,那新生产的鸡蛋就丢失了。再比如生产者很强劲(大交易量的情况),生产者1秒钟生产100个鸡蛋,消费者1秒钟只能吃50个鸡蛋,那要不了一会,消费者就吃不消了(消息堵塞,最终导致系统超时),消费者拒绝再吃了,”鸡蛋“又丢失了,这个时候我们放个篮子在它们中间,生产出来的鸡蛋都放到篮子里,消费者去篮子里拿鸡蛋,这样鸡蛋就不会丢失了,都在篮子里,而这个篮子就是”kafka“。

鸡蛋其实就是“数据流”,系统之间的交互都是通过“数据流”来传输的(就是tcp、https什么的),也称为报文,也叫“消息”。

消息队列满了,其实就是篮子满了,”鸡蛋“ 放不下了,那赶紧多放几个篮子,其实就是kafka的扩容。

各位现在知道kafka是干什么的了吧,它就是那个"篮子"。



 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐