hadoop三连问
一、什么是hadoop?
1.hadoop诞生背景
这里我们要从一款搜索引擎技术Nutch的诞生说起。Nutch 是2002年8月由Doug Cutting发起,托管于Sourceforge,Nutch的诞生主要是致力于让每个人能更容易, 同时花费很少就可以配置出世界一流的Web搜索引擎。 而为了完成这一宏伟的目标, Nutch必须能够做到:
* 每个月取几十亿网页
* 为这些网页维护一个索引
* 对索引文件进行每秒上千次的搜索
* 提供高质量的搜索结果
上面参考自百度百科
随着抓取网页数量的持续递增,Nutch遇到了严重的可扩展性问题,即如何解决数十亿网页的存储和索引。2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。方案主要包含:
分布式文件系统(GFS),可用于处理海量网页的存储
分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。
这也是hadoop的核心模型思路,而后2004年Nutch的开发人员完成了相应的开源实现HDFS和MapReduce,并从Nutch中剥离成为独立项目hadoop,hadoop诞生。到2008年,hadoop成为Apache顶级项目。
2.hadoop能做什么
hadoop是一种分析和处理大数据的软件平台。hadoop的最核心设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算。
3.hadoop的核心特性
* 扩容能力(Scalable):hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可用方便的扩展到数以千计个节点中。
* 成本低(Economical):hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低。
* 高效率(Efficient):通过并发数据,hadoop可以在节点之间动态并行的移动数据,使得速度非常快。
* 可靠性(Rellable):能自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。所以hadoop的按位存储和处理数据的能力值得人们信赖。
4.hadoop的核心组件
4.1 hadoop Common:支持其他hadoop模块的常用工具。
4.2 hadoop分布式文件系统(HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。
4.3 hadoop YARN:作业调度和集群资源管理的框架。
4.4 hadoop MapReduce:一种用于并行处理大型数据集的基于YARN的系统。
二、hadoop有哪些应用场景?
2012年美国著名科技博客GigaOM的专栏作家Derrick Harris跟踪云计算和Hadoop技术已有多年时间,在一篇文章中总结了10个Hadoop的应用场景,下面分享给大家:
1.在线旅游:
目前全球范围内80%的在线旅游网站都是在使用Cloudera公司提供的Hadoop发行版,其中SearchBI网站曾经报道过的Expedia也在其中。
2.移动数据:
Cloudera运营总监称,美国有70%的智能手机数据服务背后都是由Hadoop来支撑的,也就是说,包括数据的存储以及无线运营商的数据处理等,都是在利用Hadoop技术。
3.电子商务:
这一场景应该是非常确定的,eBay就是最大的实践者之一。国内的电商在Hadoop技术上也是储备颇为雄厚的。
4.能源开采:
美国Chevron公司是全美第二大石油公司,他们的IT部门主管介绍了Chevron使用Hadoop的经验,他们利用Hadoop进行数据的收集和处理,其中这些数据是海洋的地震数据,以便于他们找到油矿的位置。
5.节能:
另外一家能源服务商Opower也在使用Hadoop,为消费者提供节约电费的服务,其中对用户电费单进行了预测分析。
6.基础架构管理:
这是一个非常基础的应用场景,用户可以用Hadoop从服务器、交换机以及其他的设备中收集并分析数据。
7.图像处理:
创业公司Skybox Imaging使用Hadoop来存储并处理图片数据,从卫星中拍摄的高清图像中探测地理变化。
8.诈骗检测:
这个场景用户接触的比较少,一般金融服务或者政府机构会用到。利用Hadoop来存储所有的客户交易数据,包括一些非结构化的数据,能够帮助机构发现客户的异常活动,预防欺诈行为。
9.IT安全:
除企业IT基础机构的管理之外,Hadoop还可以用来处理机器生成数据以便甄别来自恶意软件或者网络中的攻击。
10.医疗保健:
医疗行业也会用到Hadoop,像IBM的Watson就会使用Hadoop集群作为其服务的基础,包括语义分析等高级分析技术等。医疗机构可以利用语义分析为患者提供医护人员,并协助医生更好地为患者进行诊断。
三、学习hadoop后应该具备哪些能力?
1.hadoop分布式集群的平台搭建
2.hadoop分布式文件系统HDFS的原理理解及使用
3.hadoop分布式运算框架MapReduce的原理理解及编程
4.Hive数据仓库工具的熟练应用
5.Flume、sqoop、oozie等辅助工具的熟练使用
6.Shell/python等脚本语言的开发能力
附:HDFS运行原理
1、NameNode和DataNode节点初始化完成后,采用RPC进行信息交换,采用心跳机制,即DataNode节点定时向NameNode反馈状态信息,反馈信息如:是否正常、磁盘空间大小、资源消耗情况等信息,以确保NameNode知道DataNode的情况;
2、NameNode会将子节点的相关元数据信息缓存在内存中,对于文件与Block块的信息会通过fsImage和edits文件方式持久化在磁盘上,以确保NameNode知道文件各个块的相关信息;
3、NameNode负责存储fsImage和edits元数据信息,但fsImage和edits元数据文件需要定期进行合并,这时则由SecondNameNode进程对fsImage和edits文件进行定期合并,合并好的文件再交给NameNode存储。
注:文章内容整理自网络,算是个人学习笔记,仅做记录整理。