|
1. 面对海量大数据,首先要考虑的当然是怎么来存大数据了。HDFS与传统的文件系统有什么不同呢?
HDFS具有高可扩展,高可靠性,高可用性,成本低等特点,通过PC组建集群,数据副本方式,实现动态扩展、自动容错等功能。
2. 如何处理数据呢?比如24小时热点微博更新,必须在24小时之内跑完这些处理,试想一条机器挂了如何重新启动相应的任务呢?MapReduce / Tez / Spark作为计算引擎,恰好能够解决机器之间互相通信交换数据等功能,那么从第一代的计算引擎MapReduce,到第二代计算引擎Tez和Spark,究竟有哪些演进呢?为什么说Spark会成为Hadoop生态中下一代处理引擎和分析引擎?
对时效性要求高的应用不能一代map/reduce来处理了,可以用以RDD为基础的内存计算框架spark,或者流式数据框架storm来处理。spark以RDD为基础,在上面可以进行高效的批计算,交互分析与流式数据处理,相当于整合了map/reduce,hive,storm等多个系统的功能,所以说它是Hadoop生态中下一代处理引擎和分析引擎。
3. 很多程序员可能会有同感,MapReduce的程序写起来很麻烦,那么有没有更高层更抽象的方式来描述MapReduce呢?Pig是接近脚本的方式来描述MapReduce,而Hive则用SQL,SQL对比Java有哪些优势呢?
通过类SQL编译成map/reduce任务,比如HIVE。 SQL可以方便多年使用SQL的数据分析开发人员,而不是要求他们去写java程序开发map/reduce,提高生产效率。
4. 作为大数据仓库的核心逐渐,Hive成为了数据分析人员的青睐,但大家总期待数据分析能跑得更快点,特别是小编混迹多年的媒体圈,期待头条推荐更新24小时内能跑多快就多快。MapReduce引擎太慢,于是Impala,Presto,Drill诞生了,那么以牺牲稳定性来换取SQL任务的快速处理,是否值得呢?谈谈您的看法。
Impala等系统优化了sql的任务编译,以类型MPP的商业查询引擎来处理交互式数据分析,牺牲的一点点稳定性换来高效的交互分析与方便的分析环境,非常值得。
5. 看完了以上四道题,皮皮小结下,整个数据仓库架构的底层是HDFS,上面跑MapReduce/Tez?Spark,在MapReduce上运行Hive、Pig。当然也可以在HDFS上跑Impala,Presto,Drill,这样大概能解决中低速数据处理的要求,那么还能不能更快点呢?
Spark, Impala等相对于map/reduce来说,速度已经在内存计算级别,已经非常快了。随着Impala等的成熟,速度可以进一步加快。
6. 想想看,京东等电子商城24小时更新热销商品,更新延迟有没有可能做到一分钟之内呢?这也许要指望流计算了,而作为最流行的流计算平台,Storm的确很厉害,基本无延迟,尤其在做词频统计的时候,可它到底能否取代数据仓库和批处理系统呢?
各有应用场景,不能谁取代谁。流式计算可以实时计算一些业务逻辑,但复杂的数据分析与处理还是需要数据仓库与批处理系统。
7. 当以上各种组件在同一集群上运作的时候,怎么做到有序工作呢?这得靠调度系统了,比如最流行的Yarn,前很多公司都把不同的计算框架跑在YARN上,这个中央管理系统,大家有木有用过?谈谈你的感受。
通过Yarn或者Mesos等资源调度系统,企业可以大幅提高集群的资源利用率,充分发挥每个节点的CPU、内存、磁盘IO、网络带宽性能,而且方便整个集群的监控与运维,而不是每个业务一个集群比较混乱难于管理。 |
|