Hadoop学习总结

前面几篇文章基本包括了Hadoop的主要基础内容,可以看到,Hadoop的关键部分主要就是MapReduce计算框架以及HDFS分布式文件系统,资源管理主要通过YARN进行。更加深入的内容,需要在工作和项目中历练,遇到问题寻求解决方案。


今天的文章主要从更加宏观的角度,对Hadoop进行一下总结。其中一些是自己的思考,一些是网上的意见,希望对大家将来使用和深入学习Hadoop有所帮助。


抛开Hadoop的各类框架,我们先来看看Hadoop本身具有的模块。Hadoop主要用来进行大数据的存储和分析,存储使用HDFS,分析则使用MapReduce。


HDFS是无可厚非的目前使用最为广泛的分布式文件系统,无论HBase还是Hive等等框架,底层依然是HDFS,它们所做的只是使得HDFS的操作方式更加多元化。


Hadoop的衰弱则主要体现在MapReduce部分,这主要是由于MapReduce是一个批处理系统,它不适合于处理交互式分析。MapReduce只能处理离线数据,也就是存储在磁盘上的数据。这样的方式不是很适合于当前的应用。所以Spark作为一个新的框架应运而生,而它只是取代了MapReduce的部分。所以,不应该说Spark的出现就让Hadoop失去了生存环境——Spark只是替换了MapReduce,而Spark必须在Hadoop的环境才能更好的生存,才能体现它的价值。


Hadoop比较适合于处理数据量为PB级的数据,这对于当前一般的企业,恐怕很难达到。所以也导致Hadoop真正的使用面并不是很广,不过国内BAT都在使用,另外,移动联通以及银行也在使用。


所以,是否使用Hadoop是由你的数据量决定的,而是否需要使用某个框架,是由你的架构以及业务需求决定的。如果只有GB级的数据,完全没有必要使用Hadoop,使用数据库系统就能很好地解决问题。


那么,Hadoop的框架主要有哪些呢?分别起到了什么样的作用?下面给出简单的介绍,我也在学习中,不是所有的都有了解,需要的时候,我们再去学习吧,但是至少应该知道我们有哪些工具可以使用。


Avro:Avro是一个独立于编程语言的数据序列化系统。Avro数据用一种模式语言定义,这种模式语言类似于JSON,Avro解析模式语言的数据描述,可以执行序列化和反序列化。这样就使得数据更加独立,不依赖于使用数据的平台和编程语言。我们可以将数据通过Avro写入HDFS,也可以从HDFS读取出来。


Flume:Flume类似于连接Hadoop中各个组件的管道,管道中输送的是流式的数据,使用Flume可以优化数据的传输。


Sqoop:实现数据在关系型数据库和HDFS之间的双向传输。


Pig:让你可以使用类似于SQL的方式(Pig称之为Pig Latin)来访问HDFS上的数据。


Hive:Pigs Latin只能说是类似于SQL的方式,使用Hive则是完全使用和SQL基本一样的语句。


HBase:如果说Hive提供了一种操作HDFS的类SQL的方式,HBase就是提供了一种操作HDFS的类NoSQL的方式。


Spark:这个就是前面提到的代替MapReduce的家伙,其最大的优点就是计算在内存中进行,这使得计算速度得到极大地提高,不过还是要清楚,Spark只是一个计算框架,它不依赖于具体的集群。所以有些人说Spark革了Hadoop的命有点极端,只能说,Hadoop的MapReduce可以用Spark替换。


ZooKeeper:Hadoop的分布式协调服务。另外,还可以让你的系统对失败进行正确的处理。


以上就是一些常用的Hadoop框架,它们针对大数据处理各个方面的问题提供了解决方式。我们在需要时,可以优先考虑它们,如果使用某个组件可以很好地解决我们的问题,当然是最好不过的。


从上面可以看出,Hadoop依然是大数据处理的优选框架,虽然我们不一定有机会从事Hadoop相关的职业,但是,了解一些这个领域的知识还是获益匪浅,至少让我们的工具箱中多了一样工具,毕竟在这个数据量爆炸式增长的世界,我们谁也无法保证当前正在开发或者维护的系统不会达到这样的数据量。


猜你喜欢

转载自blog.csdn.net/yjp19871013/article/details/78760281