大数据生态之开源工具简介

大数据生态之开源工具简介

说是搞大数据,其实只能叫做水大数据,也水了两年多了。个人对大数据的理解主要简单地分为两个大方向吧,一个是算法(机器学习,深度学习),另外一个就是开发工具,从hadoop到yarn到hbase,mongoDB,hive,pig,flume,kafka,spark等等。这些东东都一直在接触,但都没有深入,感觉自己就像一个万金油。。。。。另外一个方面,在知乎上看到,什么是大数据工程师,觉得跟我目前接触和了解到的很像很像。

以下引用自http://www.zhihu.com/question/27232470:
1.这个问题不大清楚。大数据工程师有多种解释,一种是用大数据的,就是data scientist这种,一种是开发大数据平台的,就是平台开发工程师,比如写hadoop,hive的某个组件的工程师。
2.如果是走应用这个路线,需要的技能包括:sql,java,mapreduce job的编写,一些比较简单的脚本编写,再加上一些数据分析领域的东西,比如统计,机器学习等等。
3.如果是走底层开发这个路线的,需要的技能基本上是比较硬的开发技能,很多都需要了解语言的高级特性,软件开发模式呀,抽象呀,操作系统怎么用,编译啊,测试呀。这种开发学习曲线比较陡峭一点。
**
作者:桂能
链接:http://www.zhihu.com/question/27232470/answer/83687684
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

待我娓娓道来,自下而上:

  • Flume
  • Kafka
  • Storm
  • Yarn
  • Spark
  • Hive
  • Pig
  • Hbase

Flume

(未开始写)

http://flume.apache.org/
Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic application.

大数据嘛,当然要有数据了,数据从哪来,到哪去,这是一个问题,不,是两个问题。

先说从哪来。

爬虫,日志,静态数据等。这里涉及到数据收集的问题,一般会用到一些爬虫框架和logstash等框架,这里就不展开了。

然后到哪去

当然是存起来用了,最终的用途就比较多了,数不胜数,比如BI工具(大数据决策平台,最近接触比较多),DSP,各种2B,2C的决策应用等等,这个也不展开了,以后会写点BI,DSP的东西,其他的也不太了解。

说了半天都没看到flume在哪?其实你也应该猜到了(即使没看上面那串英文),flume其实就是介于“从哪来”,“到哪去”中间,担任一个搬运工的作用。

大数据生态之开源工具简介_第1张图片
来自官网的图,很形象的说明了flume的位置,和基本的架构,方格里的source,channel,sink就是三个基本组成部分

Kafka

http://kafka.apache.org/documentation.html#introduction
Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.

从Flume的那个图可以看出,数据通过Flume传送到了HDFS上,然后我们想象一下,HDFS的存储空间比较小,我的应用在HDFS上是把数据处理完了就删除HDFS上的数据。如果Flume到HDFS的写的速度比较快,那么当然就挂了,那么怎么办呢?一种办法是Flume写的速度减慢,但是有个问题就是,Web-Server的并发很大,Flume没法减小写到HDFS的速度怎么办,依然挂。所以第二种办法就是在Flume和HDFS中间,可以加一个缓冲,就是Kafka了。

Kafka有着不同于其他消息队列的设计:
大数据生态之开源工具简介_第2张图片
Kafka的独特设计,来自官网

这个图上可以看出几个东西:

  1. 分区,和分组保证
  2. 一个分区,只能被同一个分组内的 唯一一个 instance 读取
  3. 也就是说,一个分组内的实例数量不能超过分区数量

具体介绍请看这篇:http://blog.csdn.net/bagba/article/details/51694151

你可能感兴趣的:(大数据)