Hadoop和大数据是这两年最火的词儿们之一,越来越多的公司对这个东西感兴趣,但是我接触到的大多数公司里的人,无论是技术人员还是老板。都不知道怎么能把这些东西用于改善自己公司的业务。在解答的过程中,提炼出几个要点,记录一下。
大数据和云是不是一回事?
这是最容易混淆的概念之一,我个人认为这是两回事,云服务,无论是云主机还是云存储还是云的其他应用,都是向用户提供一个接口,但这个接口的后端是虚拟机技术,或者分布式存储技术,或者其他分布式计算技术等等。简而言之,云的概念就是我向你提供服务,而你不需要关心这种服务的架构或者技术实现有多么复杂。打个比方,就好象是,云之前的时代我们要用电,就需要自己造一个电厂发电,造机组,造变电站,然后再去用它。而云服务就好象是别人搭好了一个电厂,电线直接进你家,你要用,只需要插上插头,不需要关心电是怎么被制造出来的。电力的生产和电力设备的维护都由国家电网承担。联系到网络方面,就是,我们以前要自己买服务器,自己装系统,自己上架,自己做负载均衡,自己维护软硬件环境。有了云之后,这些都通过云服务商的虚拟机技术完成了。数据安全和网络安全都由云服务商提供,你也不需要专门请人维护一堆设备。
而说到大数据,这个可以是基于云的,也可以是不基于云的。大数据的处理技术与提供云服务的技术是不尽相同的,但是又有所交集。可以说,云服务是基础设施,是市政工程,而大数据是城市里的高楼大厦。大数据可以基于云,也可以不基于云。
从技术角度上说,国内的大多数云服务商,主要提供的是虚拟机服务,这是一种分的概念,把一台物理服务器拆成多个虚拟的小服务器,尽可能多的使用其物理资源,避免浪费。而大数据是合的思想,是把很多台服务器合并成一个虚拟的巨型服务器,通过分配计算资源使数据可以快速的为生产力服务。用一句中国的老话形容大数据和Hadoop就是:三个臭皮匠顶个诸葛亮。用合并起来的计算资源超越小型机或者中型机的计算能力。这里面当然也有云的概念存在着,就是说,你不需要关心数据的存储和计算到底是怎么完成的,你只需要用就可以了。
大数据技术是不是一定需要数据量大才可以,数据量不大就不需要用?
通常是这样认为的,但是并不绝对,计算维度大,计算过程复杂也都可以认为是大数据。换句话说,就是,如果你所需要的数据,在你所需要的时间内无法正常计算出来,你可能就需要用到大数据的技术了。
一方面,你的数据需要的存储量超过数据库或者数据仓库的能力范围,你可能需要大数据技术;另一方面,你的计算量超过传统的数据处理手段的时效性能力范围之外,你也可能需要大数据技术。而典型的计算能力的挑战就是来自于数据挖掘和多维度分析。可能数据量不大,但是算法和过程很复杂,也可能会需要大数据的技术。比如对用户做推荐,如果你对大数据开发感兴趣,想系统学习大数据的话,可以加入大数据技术学习交流扣扣君羊:522189307,欢迎添加,了解课程介绍,获取学习资源。基于用户群的分类做精准的广告投放。或者在传统行业计算气象预报,计算地质数据做石油探测,矿产探测。又或者用在金融行业,通过对历史数据建立数学模型,对证券和期货贷款等做风险预估。之所以阿里巴巴对于中国的经济和进出口的预测比商务部和统计局更精准,除了他们有一群数学和统计专家外,大数据是完全不可或缺的技术手段。
大数据技术是不是就是那个什么憨杜普?
显然不是,大数据领域存在很多厂商和应用,有开源的,有收费的。比如一些非Hadoop大数据处理的公司和软件,EMC的Greenplum,Splunk公司的splunk等等。这些都不是基于Hadoop的,但是也有共同的缺陷,就是很贵。所以,大多数公司采用开源软件来完成大数据的业务处理。而开源领域做得最好的,应该就是hadoop了。所以现在hadoop基本成了大数据处理的代名词了。基于Hadoop衍生了很多家商业公司,因为Apache的许可协议并不拒绝商业。像国内比较知名的Cloudera,MapR,他们的商业产品都是基于Hadoop及其周边的生态软件。
大数据应该怎么推进公司业务的发展?
这是个关乎想象力的事情,有了大容量和大计算,至于怎么用,这只能自己想。原来数据怎么做现在还怎么做,不过除了啤酒与尿布,口香糖与避孕套之外,还有一个比较生动的案例大约是这样的:美国有一个公司,在各产粮区每隔一英里插一个传感器,收集空气湿度和土壤含氮量等数据。收集上来以后通过大数据的处理手段和算法,预测出该地区的收成可能会是什么情况,然后把预测报告卖给美国的农业保险公司。
Hadoop有什么优缺点?
Hadoop的优点是数据的容量和计算能力以及数据的备份安全性有了很大程度的提升,1.0最大可以支持到大约4000台服务器的并行存储和运算,而2.0大约可以支持6000台服务器。不过2.0现在还不是很完善,所以生产环境还是建议用1.0。我认为4000台集群的容量和计算能力足以匹敌IBM的大型机,从去年12月15号的中国银行大型机宕机事件来看。大型机就算安全性再有保障,也毕竟是单点。真出了故障,谁也不敢拍板切换到备份大型机上。Hadoop 1.0已经有了很多方案去解决单点问题,2.0自己就支持单点故障切换。或许未来继续发展,将全面超越大型机。事实上,IBM已经开始出自己的Hadoop发行版了。
至于缺点,就是Hadoop1.0还是存在单点问题,但是可以通过其他技术手段弥补做到热切换,只是要求维护人员的技术水平较高。另外一个缺点是计算的时间会比较长,还无法做到实时查询和快速决策响应。但是有很多其他的方案在弥补Hadoop的这个问题,像Apache出的跟Google Dremel竞争的Drill,Cloudera推出的Impala,和其他一些产品。而实时计算则有Twitter开源的Storm集群,设计理念跟Hadoop是一样的,但是可以对实时数据流进行计算,并即刻生成计算结果。做到随查随出。
在各个开源社区的支持下,在全世界程序员的共同努力下,大数据的处理能力也在高速的发展,程序员们正在用自己的智慧改造这个世界。