|
1. 面对海量大数据,首先要考虑的当然是怎么来存大数据了。HDFS与传统的文件系统有什么不同呢?
传统的文件系统(网络存储除外),基本上都是单节点,而HDFS众所周知是分布式存储,HDFS也有使用范围,如果都是小文件存储,原生态的HDFS也不一定能适应。
2. 如何处理数据呢?比如24小时热点微博更新,必须在24小时之内跑完这些处理,试想一条机器挂了如何重新启动相应的任务呢?MapReduce / Tez / Spark作为计算引擎,恰好能够解决机器之间互相通信交换数据等功能,那么从第一代的计算引擎MapReduce,到第二代计算引擎Tez和Spark,究竟有哪些演进呢?为什么说Spark会成为Hadoop生态中下一代处理引擎和分析引擎?
实时处理Storm、Spark,HBase设计好的话,也可以做实时查询,然后聚合。至于机器挂掉,这个不用我们担心,Hadoop有机制来处理(JobTracker、NameNode、SecondNameNode等)
3. 很多程序员可能会有同感,MapReduce的程序写起来很麻烦,那么有没有更高层更抽象的方式来描述MapReduce呢?Pig是接近脚本的方式来描述MapReduce,而Hive则用SQL,SQL对比Java有哪些优势呢? MapReduce是由Map、Reduce来先后协调分布完成,Map(数据分类,聚合),然后通过JobTracker通知到Reduce再来处理,中间环节肯定也不少,还有数据临时存储等。Hive执行SQL也是将sql解析成MapReduce来跑,只是解析是由Hive来完成,相当于Hive帮你写了MapReduce。sql对DB来说上手快一点(也有部分不是标准sql),java对开发来说容易上手(可以理解成存储过程);Pig是全脚本的方式操作,类似大牛们用sqlplus命令行来分析sql。但是MapReduce都有一个缺点,那就是在执行MapReduce初始Job话费时间比较长。
4. 作为大数据仓库的核心逐渐,Hive成为了数据分析人员的青睐,但大家总期待数据分析能跑得更快点,特别是小编混迹多年的媒体圈,期待头条推荐更新24小时内能跑多快就多快。MapReduce引擎太慢,于是Impala,Presto,Drill诞生了,那么以牺牲稳定性来换取SQL任务的快速处理,是否值得呢?谈谈您的看法。 既然都部大数据平台了,分布式处理了,还在乎硬件?存储、万兆交换机、RAM
5. 看完了以上四道题,皮皮小结下,整个数据仓库架构的底层是HDFS,上面跑MapReduce/Tez?Spark,在MapReduce上运行Hive、Pig。当然也可以在HDFS上跑Impala,Presto,Drill,这样大概能解决中低速数据处理的要求,那么还能不能更快点呢? HDFS只是一个存储系统,Hadoop的两大功能之一。快没有概念,现在快了,还想要更快,那就要从系统的整体架构、设计来入手了。分布式缓存Redis也可以协调起来。
6. 想想看,京东等电子商城24小时更新热销商品,更新延迟有没有可能做到一分钟之内呢?这也许要指望流计算了,而作为最流行的流计算平台,Storm的确很厉害,基本无延迟,尤其在做词频统计的时候,可它到底能否取代数据仓库和批处理系统呢? 理论上可以,具体实际当中还需要不断调整参数、优化处理。虽然类似多线程(Supervisor),但是多线程也有资源分配、锁的概念。
7. 当以上各种组件在同一集群上运作的时候,怎么做到有序工作呢?这得靠调度系统了,比如最流行的Yarn,前很多公司都把不同的计算框架跑在YARN上,这个中央管理系统,大家有木有用过?谈谈你的感受。
Yarn应该是基于Hadoop上面的资源调度系统,分布式情况下,也可以考虑通过Zookeepr来实现。
|
|