什么说Hadoop是一个生态系统?

Hadoop 本身是一款开源大数据组件,它包括三个部分:MapReduce计算模型、HDFS 分布式文件系统、Yarn 资源管理系统。像现在其他 Hadoop 相关的大数据组件,比如HBase、Hive等,因为这些组件底层其实还是依赖 Hadoop 系统的功能模块来进行实现的,没有完全脱离于 Hadoop 系统单独形成一个开源组件。

所以整体 Hadoop 生态系统包含很多大数据组件。比如像 HBase NoSQL 数据库的实现,最底层是以 HFile 文件进行存储,而 HFile 文件是在 HDFS 上面进行存储。HBase 整体上理解可以认为是一个基于 Hadoop HDFS 分布式文件系统的一个数据库。使用 HDFS 分布式文件系统进行存储时,因为 HDFS 本身具有分区容错性,同时HDFS 文件系统是分布式的,未来在机器扩容时,也非常方便。

现在其实也有很多分布式计算引擎也属于 Hadoop 生态系统,比如 Spark ,Storm等。公司其实为了大数据技术的收敛,一般都会统一来使用 Yarn 资源管理器来管理和调度集群的资源,而很多 Spark 任务、Storm 任务也支持在 Yarn 上面进行运行,而 Yarn 资源管理器又属于 Hadoop 本身的一个模块,所以它们属于 Hadoop 生态系统的一员。

虽然 Hadoop 生态系统有很多大数据组件,但是新人在学习入门的时候,我建议还是先从 Hadoop 底层的原理和 Hadoop API 的使用进行入手,先去了解一下 Hadoop 到底是一个什么样的大数据组件,它包含了哪些,它的功能是什么等等。我建议可以先从《Hadoop权威指南》这本书开始看起。如果书确实看不懂的话,可以去网上看一些 Hadoop 的技术博客,有些技术博客比书本要讲解的清楚,同时,你也可以从网上下载 Hadoop 相关的视频来进行学习,想入门大数据的朋友,我推荐先从 Hadoop 入手。

为什么在数据量很大时(TB以上)需要利用hadoop系统?

当数据量很大时,单台机器已经不能够在存储和计算这么大量的数据,需要引用到分布式技术来处理这些数据。Hadoop 作为一种大数据处理系统,包括分布式文件存储、分布式计算、以及资源管理,使用 Hadoop,可以解决大数据量的存储和计算的问题。同时 Hadoop 是一款开源大数据组件,很多公司直接使用 Hadoop 技术,就可以满足公司内部的离线业务需求,技术成本很低。

Hadoop 文件系统将数据量大的文件分布式存储在不同机器,解决数据量大不能存储问题Hadoop 中 HDFS 分布式文件系统,通过对数据体量非常大的文件进行分块,每个块默认 256 兆,将其分成数据量较小的多个块,然后对每个数据块在进行数据备份存储,一个数据块有三个数据副本,冗余的存储在集群上,通过数据冗余解决数据容错问题。

打个比方,你的一个文件大小为 1 TB 大小,单台机器磁盘 500 G 存不下。此时你将文件存储在 HDFS 文件系统上,那么该文件最终会按照 256 兆一个数据块,划分成 4000块,分布式的存储在 Hadoop 集群上面,每台机器都会存储这个文件的一个数据子集,这样就解决了数据量大单机不能存储的问题。

Hadoop MapReduce 分布式计算框架,解决单台机器不能计算问题Hadoop MapReduce 计算框架包含两个步骤:Map阶段和Reduce阶段。由于 HDFS 文件系统将数据按照块进行存储,当在 Map 阶段的时候,会对每一个块进行计算,相当于对一个数据量大的文件,并行计算,每个 Map 任务处理的就是该文件的一个数据子集。

Reduce 阶段就是对 Map 任务产生的数据,在做一个汇总计算。打个比方,就比如 Hadoop 中 WordCount 场景,Map 阶段只是计算这个 Map 任务输入文件的中的每个单词的数量,但是多个 Map 任务中key有可能相同,所以最终还需要在 Reduce 任务中再进行一次汇总。Map1 任务计算的单词 A 有 3 个,Map2 任务计算的单词 A 有 2 个,最后通过 Reduce 任务汇总,单词 A 个数就有 5 个。

个人想法Hadoop 由于其开源特性,任何公司都可以使用其作为公司的大数据处理计算框架,所以 Hadoop 在国内使用的范围还是非常广的。同时有很多其他大数据组件最底层或多或少都需要使用到 Hadoop ,比如 HBase 数据库、Flink 实时计算引擎的状态存储等等,Hadoop 生态是非常广的,所以很多公司还在使用 Hadoop。

sql server、my sql、oracle与hadoop,哪个才是未来趋势?到底有什么区别?

谢谢邀请!SQL server,Mysql,Oracle都可以说是老牌数据库产品了,就产品本身来说,这三个数据库产品都是成功的。这三个产品都有清晰的市场定位:Sql server专注服务于windows服务平台,提供了大量中小型应用的数据库服务,口碑跟windows产品一样,操作简单,界面交互好,性能也不错,当然使用sql server是需要付费的,价格还算公道,中小型企业都能负担得起,是.net平台的标配数据库。

基于微软强大的号召力和在软件平台领域的地位,sql server一定是其未来版图里面不可缺少的一部分。Mysql是开源数据库的佼佼者,用户量庞大,单机性能也可圈可点,集群性能彪悍。早年间淘宝就采用了2000台基于mysql的数据库服务器集群为广大商户服务,可以说经历了市场的检验。虽然mysql更新较慢,直到5.0以后的版本才有了较大的改善,但是这也并没有影响它的广泛使用。

php mysql是一个经典的组合,被广泛使用在web开发领域,今天依然如此!随着java开发的普及和大量应用,mysql也得到了进一步的发展,几乎所有java程序员都部署过java mysql的解决方案,由于mysql与java目前同属于一家公司(oracle),自然兼容性是没问题的。基于mysql庞大的用户群和良好的程序员口碑,在未来mysql也一定会占据相当的市场份额,另外一个不能忽略的是mysql是开源软件,几乎零成本的使用费用也让它具备了强大的竞争力!Oracle可以说是数据库领域的老大了,彪悍且全面的性能,稳定的服务,一直是各路土豪的最佳选择!从oracle的i版本到g版本再到c版本,它一直是商用数据库领域的老大。

可以这么说,如果你的预算够用,没有人会拒绝oracle,可以说它是程序员眼里的奢侈品。但是贵的不一定是最好的选择,如果数据量不大完全没有必要使用oracle。加上现在oracle已经把mysql和java招至麾下,完成了高低配,可以预见在未来很长一段时间内oracle依然会是商用数据库领域的主角。最后我们说一下hadoop,伴随着大数据的迅速普及以hadoop为代表的解决方案也随之得到了大量的应用。

行业内以亚马逊为代表的数据服务商已经严重威胁到了Oracle的市场地位。最近一段时间Oracle的老板埃里森频繁攻击亚马逊我想也说明了一些问题,但是是否亚马逊能完全取代Oracle呢?至少短期内是不可能的,就像埃里森说的:就在大家都来好亚马逊的时候,亚马逊却花费巨资购买oracle的服务。Hadoop以快闻名于世,海量数据的秒级处理,让习惯了等待的程序员兴奋不已,但是它的精确度和数学关系却远远没有传统数据库严谨,可以说它是牺牲了精确度换来了速度。


文章TAG:Hadoop文档  为什么使用hadoop  hadoop  文档  为什么  
下一篇