存储
主要包括hdfs、Kafka
计算
主要包括MapReduce、Spark、Flink
查询
主要为Nosql和Olap,Nosql
主要包括Hbase、 Cassandra 等:
- 其中olap包括kylin、impla等,
- 其中Nosql主要解决随机查询,
- Olap技术主要解决关联查询
挖掘
机器学习和深度学习等技术,包括TensorFlow、caffe、mahout
Google三本阵法修炼秘籍
大数据入门的最好文章,通俗易懂,先看此三篇再看其它技术 :
- 《Google file system》:论述了怎样借助普通机器有效的存储海量的大数据;
- 《Google MapReduce》:论述了怎样快速计算海量的数据;
- 《Google BigTable》:论述了怎样实现海量数据的快速查询;
apache根据这三本秘籍研究出对应的武学巨著《hadoop》,Hadoop包括三大部分,分别是hdfs、MapReduce和hbase:
- hdfs解决大数据的存储问题
- mapreduce解决大数据的计算问题
- hbase解决大数据量的查询问题
演进:
- mapreduce-> hive,pig、impla等SQL ON Hadoop的简易修炼秘籍
- MapReduce-> 推出基于内力(内存)的《Spark》,意图解决所有大数据计算问题
- Hadoop(只能批量计算)-> SparkStreaming、Storm,S4等流式计算技术,能够实现数据一来就即时计算
- flink–流计算和批量计算的统一体
详解
- HDFS:跨平台存储数据
多台机器之间的互相通信交换数据以及完成复杂的计算:MapReduce/Tez/Spark:
- MapReduce是第一代计算引擎;Tez和Spark是第二代计算引擎;
- MapReduce的计算模型:Map和Reduce两个计算过程(中间用Shuffle串联),MapReduce程序
- Map阶段:多台机器同时读取一个文件的各个部分,分别统计词频,产生多个Map集合
- Reduce阶段:接收所对应的Map集合结果,将相同键的集合汇总,进而得到整个文件的词频结果
- Map+Reduce过于笨重
- 第二代的Tez/Spark让Map/Reduce模型更通用,让Map和Reduce之间的界限更模糊,数据交换更灵活,更少的磁盘读写,以便更方便地描述复杂算法,取得更高的吞吐量
更高层更抽象的语言层来描述算法和数据处理流程:Pig和Hive :
- Pig是接近脚本方式去描述MapReduce,Hive则用的是SQL
- 把脚本和SQL语言翻译成MapReduce程序,丢给计算引擎去计算,而就从繁琐的MapReduce程序中解脱出来
- Hive已成了大数据仓库的核心组件,易写易改,一看就懂,容易维护。
Hive on Tez/Spark和SparkSQL:设计理念:MapReduce慢,如果用新一代通用计算引擎Tez或者Spark来跑SQL,那就能跑的更快
第1-4可总结为数据仓库的构建:
底层HDFS,上面跑MapReduce/Tez/Spark,再上面跑Hive,Pig。或者HDFS上直接跑Impala,Drill,Presto。这解决了中低速数据处理的要求。
更高速的处理:Streaming(流)计算(计算模型)
- Storm是最流行的流计算平台
- 流计算的思路:达到更实时的更新,在数据流进来的时候就进行处理,基本无延迟.
- 短处是,不灵活,想要统计的东西必须预先知道,毕竟数据流过就没了,没算的东西就无法补算了。
- 因此它是个很好的东西,但是无法替代上面数据仓库和批处理系统
独立的模块KV Store,比如Cassandra,HBase,MongoD…
- KV Store就是说,有一堆键值,能很快速滴获取与这个Key绑定的数据.比如用身份证号,能取到身份数据;这个动作用MapReduce也能完成,但是很可能要扫描整个数据集
- KV Store的理念是,基本无法处理复杂的计算,大多没法JOIN,也许没法聚合,没有强一致性保证;但一般速度极快
更特制的系统/组件,比如:
- Mahout是分布式机器学习库,
- Protobuf是数据交换的编码和库,
- ZooKeeper是高一致性的分布存取协同系统
以上所有都在同一个集群上运转,所以另外一个重要组件是,调度系统;现在最流行的是Yarn
https://pic4.zhimg.com/80/v2-08f5a53fd29efb65a2573dcd5d5bd0e7_hd.jpg
https://pic1.zhimg.com/80/v2-c07c85dfa597fe9b6a1c63b24948323d_hd.jpg
- 蓝色部分,是Hadoop生态系统组件,黄色部分是Spark生态组件,虽然他们是两种不同的大数据处理框架,但它们不是互斥的,Spark与hadoop 中的MapReduce是一种相互共生的关系。Hadoop提供了Spark许多没有的功能,比如分布式文件系统,而Spark 提供了实时内存计算,速度非常快。有一点大家要注意,Spark并不是一定要依附于Hadoop才能生存,除了Hadoop的HDFS,还可以基于其他的云平台
趋势
Spark在崛起,hadoop和Storm中的一些组件在消退
HSQL未来可能会被Spark SQL替代,现在很多企业都是HIVE SQL和Spark SQL两种工具共存,当Spark SQL逐步成熟的时候,就有可能替换HSQL
MapReduce也有可能被Spark 替换,趋势是这样,但目前Spark还不够成熟稳定
Hadoop中的算法库Mahout正被Spark中的算法库MLib所替代
Storm会被Spark Streaming替换吗?Storm虽然不是hadoop生态中的一员,由于Spark和hadoop天衣无缝的结合,Spark在逐步的走向成熟和稳定,其生态组件也在逐步的完善,是冉冉升起的新星,Storm会逐步被挤压而走向衰退