Hadoop系列之基本概念及开发环境
Hadoop是什么?
The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.
-
解决的问题:
- 海量数据的存取(HDFS)分布式的存储系统,集群的方式存储数据
- 海量数据的分析(MapReduce)
- 资源管理调度(YARN)
-
作者:Doug Cutting
-
受Google三篇论文的启发(GFS,MapReduce,BigTable)
Hadoop具体能干什么?
- hadoop擅长(海量的离线的)日志分析,facebook就用Hive来进行日志分析。
- hadoop也可以做在线的实时的数据分析。
举个栗子:
设想一下这样的应用场景. 我有一个100M 的数据库备份的sql 文件.我现在想在不导入到数据库的情况下直接用grep操作 通过正则过滤出我想要的内容。例如:某个表中 含有相同关键字的记录那么有几种方式,一种是直接用linux的命令 grep 还有一种就是通过编程来读取文件,然后对每行数据进行正则匹配得到结果好了 现在是100M 的数据库备份.上述两种方法都可以轻松应对。
那么如果是1G , 1T 甚至 1PB 的数据呢 ,上面2种方法还能行得通吗? 答案是不能.毕竟单台服务器的性能总有其上限.那么对于这种 超大数据文件怎么得到我们想要的结果呢?
有种方法 就是分布式计算, 分布式计算的核心就在于 利用分布式算法 把运行在单台机器上的程序扩展到多台机器上并行运行.从而使数据处理能力成倍增加.但是这种分布式计算一般对编程人员要求很高,而且对服务器也有要求.导致了成本变得非常高。
Haddop 就是为了解决这个问题诞生的.Haddop 可以很轻易的把 很多linux的廉价pc 组成 分布式结点,然后编程人员也不需要知道分布式算法之类,只需要根据mapreduce的规则定义好接口方法,剩下的就交给Haddop. 它会自动把相关的计算分布到各个结点上去,然后得出结果。
例如上述的例子 : Hadoop 要做的事 首先把 1PB的数据文件导入到 HDFS中, 然后编程人员定义好 map和reduce, 也就是把文件的行定义为key,每行的内容定义为value , 然后进行正则匹配,匹配成功则把结果 通过reduce聚合起来回.Hadoop 就会把这个程序分布到N 个结点去并行的操作。
那么原本可能需要计算好几天,在有了足够多的结点之后就可以把时间缩小到几小时之内。
这也就是所谓的 大数据 云计算了.如果还是不懂的话再举个简单的例子:
比如 1亿个 1 相加 得出计算结果, 我们很轻易知道结果是 1亿.但是计算机不知道.那么单台计算机处理的方式做一个一亿次的循环每次结果+1 ,那么分布式的处理方式则变成 我用 1万台 计算机,每个计算机只需要计算 1万个 1 相加 然后再有一台计算机把 1万台计算机得到的结果再相加从而得到最后的结果。
理论上讲, 计算速度就提高了 1万倍. 当然上面可能是一个不恰当的例子.但所谓分布式,大数据,云计算 大抵也就是这么回事了。
Hadoop的特点
- 扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。
- 成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达到千个节点。
- 高效率(Effucient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理他们,这使得处理非常的迅速。
- 可靠性(Reliable):hadoop能自动的维护数据的多份副本,并且在任务失败后能自动地重新部署(redeploy)计算任务。
版本
- Apache 官方版本
- Cloudera Cloudera的开源Apache Hadoop发行版,亦即,面向Hadoop企业级部署。(CHD)
- Hortonworks Data Platform (HDP®)
环境配置
CentOS虚拟机的安装
- VMware安装
- 虚拟机安装