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安装
  • 虚拟机安装