欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PDF文档下载  

    Hadoop与大数据挖掘.html.pdf

    • 资源ID:5514188       资源大小:36.63MB        全文页数:226页
    • 资源格式: PDF        下载积分:20
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要20
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Hadoop与大数据挖掘.html.pdf

    前言 为什么要写这本书 最早提出“大数据”时代到来的是全球知名咨询公司麦肯锡,麦肯锡称:“数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波 生产率增长和消费者盈余浪潮的到来。” 早在2012年,大数据(big data)一词已经被广泛提起,人们用它来描述和定义信息爆炸时代产生的海量数据,并命名与之相关的技术发展与创新。那时就有人预计,从2013年至2020年,全球数据规模 将增长10倍,每年产生的数据量将由当时的4.4万亿GB,增长至44万亿GB,每两年翻一番。 既然“大数据”浪潮已经来临,那么与之对应的大数据人才呢?在国外,大数据技术发展正如火如荼,各种方便大家学习的资料、教程应有尽有。但是,在国内,这种资料却是有“门槛”的。其一, 这类资料是英文的,对于部分人员来说,阅读是有难度的;其二,这些资料对于初学者或在校生来说,在理论理解上也有一些难度,没有充分的动手实践来协助理解大数据相关技术的原理、架构等;其 三,在如何应用大数据技术来解决企业实实在在遇到的大数据相关问题方面,没有很好的资料;其四,对于企业用户来说,如何将大数据技术和数据挖掘技术相结合,对企业大量数据进行挖掘,以挖掘出 有价值的信息,也是难点。 作为大数据相关技术,Hadoop无疑应用很广泛。Hadoop具有以下优势:高可靠性、高扩展性、高效性、高容错性、低成本、生态系统完善。 一般来说,使用Hadoop相关技术可以解决企业相关大数据应用,特别是结合诸如Mahout、Spark MLlib等技术,不仅可以对企业相关大数据进行基础分析,还能构建挖掘模型,挖掘企业大数据中有价值 的信息。 对于学习大数据相关技术的高校师生来说,本书不仅提供了大数据相关技术的基础讲解及原理、架构分析,还针对这些原理,配备有对应的动手实践章节,帮助读者加深对原理、架构的认识。同时, 在每个模块结束后,书中会有一个相对独立的企业应用案例,帮助读者巩固学到的大数据技术相关知识。 对于企业用户或大数据挖掘开发者来说,特别是对想要了解如何将大数据技术应用到企业大数据项目中的企业用户或者开发者来说,本书也是一份优秀的参考资料。 本书特色 本书提供了大数据相关技术的简介、原理、实践、企业应用等,针对大数据相关技术,如Hadoop、HBase、Hive、Spark等,都有专业章节进行介绍,并且针对每一模块都有相应的动手实践,能有效加 深读者对大数据相关技术原理、技术实践的理解。书中的挖掘实践篇涉及企业在大数据应用中的所有环节,如数据采集、数据预处理、数据挖掘等,通过案例对整个系统的架构进行了详细分析,对读者有 一定实践指导作用。 读者可以从“泰迪杯”全国大学生数据挖掘挑战赛网站(http:/www.tipdm.org/tj/865.jhtml)免费下载本书配套的全部数据文件及源程序。另外,为方便教师授课,本书还特意提供了建模阶段的过程数 据文件、PPT课件,有需要的教师可通过热线电话(40068-40020)、企业QQ(40068-40020)或以下微信公众号咨询获取。 Tip DM 张良均 本书适用对象 ·开设大数据、大数据挖掘相关课程的高校教师和学生 目前国内不少高校将大数据、大数据挖掘引入本科教学中,在计算机、数学、自动化、电子信息、金融等专业开设了大数据技术相关的课程,但目前针对这一课程的相关教材没有统一,或者使用的教 材不利于课堂教学。本书提供了大数据相关技术的简介、原理、实践、企业应用等,能有效帮助高校教师教学;帮助学生学习大数据相关技术原理,进行技术实践,为以后工作打下良好基础。 ·大数据开发人员 书中针对大数据相关技术,如Hadoop、HBase、Hive、Spark等,都有专业章节进行介绍,并且针对每一模块有相应的动手实践,对初级开发人员有较强指导作用。 ·大数据架构师 挖掘实践篇涉及企业在大数据应用中的所有环节,包括数据采集、数据预处理、数据挖掘等方面,通过案例对整个系统的架构进行了详细分析,对大数据架构师有一定的实践指导作用。 ·关注大数据挖掘技术的人员 本书不仅包括大数据相关技术的简介及原理分析,还包括大数据相关技术和大数据挖掘相结合的案例分析。对于大数据挖掘技术人员来说,如何应用大数据技术来对大数据进行挖掘是重点和难点,通 过学习本书中案例的分析方法,可以将其融入自己的实际工作中。 如何阅读本书 本书主要分为两篇:基础篇和挖掘实战篇。基础篇介绍了大数据相关技术:Hadoop、Hive、HBase、Pig、Spark、Oozie等。针对每个技术都有相应模块与之对应,首先对该技术的概念、内部原理等进行 介绍,使读者对该技术有一个由浅入深的理解;其次在对原理的介绍中会配合相应的动手实践,加深对原理的理解。在每个模块的最后,会有12个企业案例,主要讲解使用当前模块的技术来解决其中的1 2个问题,这样读者不仅对技术的原理、架构有了较深入的了解,同时,对于如何应用该技术也有了一定认识,从而为以后的工作、学习打下良好基础。挖掘实战篇通过对一个大型的企业应用案例的介 绍,充分应用基础篇讲解的大数据技术来解决企业应用中遇到的各种问题。本书配套提供了程序代码及数据,读者可通过上机实验,快速掌握书中所介绍的大数据相关技术,获得使用大数据相关技术进行 数据挖掘的基本能力。 第一篇是基础篇(第17章)。第1章主要介绍了大数据相关概念,以及大数据相关技术。第2章对Hadoop进行了介绍,包括概念、原理、架构等,通过动手实践案例帮助读者加深对原理的理解。第3章 对Hive进行了介绍,重点分析了Hive的架构及如何与Hadoop相结合,同时,引入一个企业案例来分析Hive在企业应用中的地位。第4章对HBase进行了介绍,分析了HDFS与HBase的异同点、HBase架构原 理、HBase如何做到支持随机读写等。第5章介绍了Pig,详细分析了Pig的实现原理及应用场景,介绍了Pig Latin,并且通过一个Pig Latin的动手实践案例,加深读者对该脚本的理解。第6章介绍了Spark的基本 原理、RDD实现等,并且对Scala进行了简单介绍,使用Scala创建Wordcount程序,在模块的最后使用Spark MLlib完成引入的企业案例中的模型建立环节。第7章介绍了Hadoop工作流Oozie,通过动手实际建立 Hadoop MR、Spark、Hive、Pig的工作流,方便理解企业工作流应用。 第二篇是挖掘实战篇(第8章),详细介绍了一个企业级大数据应用项目法律服务大数据智能推荐系统。通过分析应用背景、构建系统,使读者了解针对系统的每一层应使用什么大数据技术来解决问 题。涉及的流程有数据采集、数据预处理、模型构建等,在每一个流程中会进行大数据相关技术实践,运用实际数据来进行分析,使读者切身感受到大数据技术解决大数据企业应用的魅力。 勘误和支持 除封面署名外,参加本书编写工作的还有周龙、焦正升、许国杰、杨坦、肖刚、刘晓勇等。由于作者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。本书内容的更新将 及时在“泰迪杯”全国数据挖掘挑战赛网站(www.tipdm.com)上发布。读者可通过作者微信公众号TipDM(微信号:TipDataMining)、TipDM官网(www.tipdm.com)反馈有关问题。也可通过热线电话 (40068-40020)或企业QQ(40068-40020)进行在线咨询。 如果你有更多宝贵意见,欢迎发送邮件至邮箱13560356095qq.com,期待能够得到你的真挚反馈。 致谢 本书编写过程中得到了广大企事业单位科研人员的大力支持,在此谨向中国电力科学研究院、广东电力科学研究院、广西电力科学研究院、华南师范大学、广东工业大学、广东技术师范学院、南京中 医药大学、华南理工大学、湖南师范大学、韩山师范学院、中山大学、广州泰迪智能科技有限公司等单位给予支持的专家及师生致以深深的谢意。 在本书的编辑和出版过程中还得到了参与“泰迪杯”全国数据挖掘建模竞赛的众多师生及机械工业出版社杨福川老师、李艺编辑的大力帮助与支持,在此一并表示感谢。 张良均 第一篇 基础篇 第1章 浅谈大数据 当你早上起床,拿起牙刷刷牙,你是否会想到从拿起牙刷到刷完牙的整个过程中有多少细胞参与其中?这些细胞在参与的过程中会结合周围环境(可能是宏观的天气、温度、气压等,可能是微观的分 子、空气中的微生物等),由你的意识控制而产生不同的反映。如果我说结合这些所有的信息,可以预测你接下来的0.00000001秒的动作,那么,你肯定说,这我也可以预测呀。比如正常情况下,你脚抬 起来走路,那么抬起来后,肯定是要落下去的,这算哪门子预测呢?那如果我说可以预测你接下来一个小时的动作呢?甚至一天,一个月,一年呢?其实这也可以勉强说是一个大数据案例了。 听起来有点夸张? 说个大家熟悉的大数据吧。相信很多人都买过股票(或者至少知道买股票这件事情),如果有人可以整合所有信息(包含基本的股票信息:股票涨跌;公司情况:如公司大小、业务等;政策情况:可 能政府突然颁布了一个红头文件等),首先肯定这些信息可以被认为是“大数据”,其次对这些“大数据”进行分析建模,如果可以预测股票的涨跌,那么这就是一个实实在在的大数据案例了。 再说一个电影桥段:“赌神”一般都可以预测摇色子的点数或者说摇色子摇到的最大点数,那么在现实情况中,这个可能实现吗?试想这样一个场景:一个人不停地摇色子,然后把摇色子的声音以及 最后的点数记录下来,不停地摇,不停地记录,那么就会形成一个巨大的数据集,从而可以使用这个巨大的数据集进行建模,即可以预测色子的点数了。你也可以将这个理解为一个大数据的应用。 现在,你是否已经有点懂“大数据”了? 第一篇 基础篇 第1章 浅谈大数据 当你早上起床,拿起牙刷刷牙,你是否会想到从拿起牙刷到刷完牙的整个过程中有多少细胞参与其中?这些细胞在参与的过程中会结合周围环境(可能是宏观的天气、温度、气压等,可能是微观的分 子、空气中的微生物等),由你的意识控制而产生不同的反映。如果我说结合这些所有的信息,可以预测你接下来的0.00000001秒的动作,那么,你肯定说,这我也可以预测呀。比如正常情况下,你脚抬 起来走路,那么抬起来后,肯定是要落下去的,这算哪门子预测呢?那如果我说可以预测你接下来一个小时的动作呢?甚至一天,一个月,一年呢?其实这也可以勉强说是一个大数据案例了。 听起来有点夸张? 说个大家熟悉的大数据吧。相信很多人都买过股票(或者至少知道买股票这件事情),如果有人可以整合所有信息(包含基本的股票信息:股票涨跌;公司情况:如公司大小、业务等;政策情况:可 能政府突然颁布了一个红头文件等),首先肯定这些信息可以被认为是“大数据”,其次对这些“大数据”进行分析建模,如果可以预测股票的涨跌,那么这就是一个实实在在的大数据案例了。 再说一个电影桥段:“赌神”一般都可以预测摇色子的点数或者说摇色子摇到的最大点数,那么在现实情况中,这个可能实现吗?试想这样一个场景:一个人不停地摇色子,然后把摇色子的声音以及 最后的点数记录下来,不停地摇,不停地记录,那么就会形成一个巨大的数据集,从而可以使用这个巨大的数据集进行建模,即可以预测色子的点数了。你也可以将这个理解为一个大数据的应用。 现在,你是否已经有点懂“大数据”了? 1.1 大数据概述 来看看所谓官网定义的大数据:大数据(Big data)或称巨量数据、海量数据、大资料,指的是所涉及的数据量规模巨大到无法通过人工或者计算机,在合理的时间内达到截取、管理、处理并整理成 为人类所能解读的形式的信息。 看得懂吗?好像也不是那么难以理解。首先,这些数据要够多,即规模巨大;第二,这些数据不能够在合理的时间内被处理并分析,也就意味着,对于一个人来说,如果让他在1天内看完1万本书,并 写相应的书评,那么这1万本书对于这个人来说就是大数据;但是,如果让1万个人在1天内看1万本书,并写对应书评,那么其实是可以完成的任务,这样这1万本书对于这1万个人来说就不是大数据了。 大数据有哪些特点呢? 首先,可以肯定的是数据量比较大,它才能被称为大数据,所以其第一个特点就是数据体量巨大。其次,数据的类型多样也是大数据的一个特征,数据类型不仅指文本形式,更多指的是图片、视频、 音频、地理位置信息等多类型的数据,个性化数据占绝大多数。第三,处理速度快也是大数据的一个特征,数据处理遵循“1秒定律”,可从各种类型的数据中快速获得高价值的信息。最后,大数据具有价 值密度低的特点,以视频为例,1小时的监控视频,在不间断的监控过程中,可能有用的数据仅仅只有一两秒。 生活中大数据有哪些应用呢? 随着大数据的应用越来越广泛,应用的行业也越来越多,我们每天都可以看到大数据的一些新奇的应用,从而帮助人们从中获取到真正有用的价值信息。 (1)理解客户,满足客户服务需求 大数据的应用目前在这个领域是最广为人知的。重点是如何应用大数据更好地了解客户以及他们的爱好和行为。企业非常喜欢搜集社交方面的数据、浏览器的日志、分析文本和传感器的数据,从而更 加全面地了解客户。在一般情况下,企业会采用建立数据模型的方式进行预测。 比如美国的著名零售商Target就是通过大数据分析得到有价值的信息,精准地预测到客户在什么时候想要小孩。再比如,通过大数据应用,电信公司可以更好地预测出流失的客户,沃尔玛则更加精准 地预测出哪个产品会大卖,汽车保险行业会更加了解客户的需求和驾驶水平,外国候选政党也能了解到选民的偏好。 (2)提高医疗水平和研发效率 大数据分析应用的计算能力可以让我们能够在几分钟内解码整个DNA,并且制定出最新的治疗方案,同时更好地了解和预测疾病。大数据技术目前已经在医疗中应用,如监视早产婴儿和患病婴儿的情 况,通过记录和分析婴儿的心跳,对婴儿的身体可能出现的不适症状做出预测,从而更好地救治婴儿。 (3)改善安全和执法 目前来说,大数据已经广泛应用到安全执法的过程当中。想必大家都知道美国安全局已经开始利用大数据打击恐怖主义,甚至监控可疑人的日常生活。而企业则应用大数据技术防御网络攻击,警察应 用大数据工具捕捉罪犯,信用卡公司应用大数据工具来检测欺诈性交易等。 (4)改善我们的城市 大数据还被用来改善我们所生活的城市。例如基于城市实时交通信息、利用社交网络和天气数据来优化最新的交通情况。目前很多城市都在进行相关的大数据分析和试点。 (5)金融交易 大数据在金融行业主要是用于金融交易。高频交易(HFT)是大数据应用比较多的领域,其中大数据算法被应用于交易决定。现在很多股权的交易都是利用大数据算法进行的,这些算法越来越多地考 虑了社交媒体和网站新闻来决定在未来几秒内是买入还是卖出。 通过上面的描述也可以看出,大数据不只是适用于企业和政府,同样也适用于我们生活当中的每个人。我们可以利用可穿戴装备(如智能手表或者智能手环)生成最新的数据,对热量的消耗以及睡眠 模式进行追踪;还可以利用大数据分析来寻找属于我们的爱情,大多数的交友网站就是应用大数据工具来帮助需要的人匹配合适的对象。 1.2 大数据平台 大数据平台有哪些呢? 一般认为大数据平台分为两个方面,硬件平台和软件平台。硬件平台一般如Open-Stack、Amazon云平台、阿里云计算等,类似这样的平台其实做的是虚拟化,即把多台机器或一台机器虚拟化成一个 资源池,然后给成千上万人用,各自租用相应的资源服务等。而软件平台则是大家经常听到的,如Hadoop、MapReduce、Spark等,也可以狭义理解为Hadoop生态圈,即把多个节点资源(可以是虚拟 节点资源)进行整合,作为一个集群对外提供存储和运算分析服务。 Hadoop生态圈大数据平台,可以大概分为3种:Apache Hadoop(原生开源Hadoop)、Hadoop Distribution(Hadoop发行版)、Big Data Suite(大数据开发套件)。Apache Hadoop是原生 的,即官网提供的,只包含基本的软件;Hadoop Distribution是一些软件供应商提供的,具有的功能相对多,这个版本有收费版也有免费版,用户可选;而大数据开发套件则是一些大公司提供的集成方 案,提供的功能更多,但是相应的也比较贵。 Apache Hadoop是开源的,用户可以直接访问或更改代码。它是完全分布式的,配置包含用户权限、访问控制等,再加上多种生态系统软件支持,比较复杂。这里涉及版本不兼容性问题。所以该版 本比较适合学习并理解底层细节或Hadoop详细配置、调优等。 Hadoop Distribution版本简化了用户的操作以及开发任务,比如可以一键部署等,而且有配套的生态圈支持以及管理监控功能,如业内广泛使用的HDP、CDH、MapR等平台。CDH是最成型的发行 版本,拥有最多的部署案例,而且提供强大的部署、管理和监控工具,其开发公司Cloudera贡献了自己的可实时处理大数据的Impala项目。HDP是100%开源Apache Hadoop的唯一提供商,其开发公司 Hortonworks开发了很多增强特性并提交至核心主干,并且Hortonworks为入门者提供了一个非常好的、易于使用的沙盒。MapR为了获取更好的性能和易用性而支持本地UNIX文件系统而不是HDFS(使 用非开源的组件),并且可以使用本地UNIX命令来代替Hadoop命令。除此之外,MapR还凭借诸如快照、镜像或有状态的故障恢复之类的高可用性特性来与其他竞争者相区别。当需要一个简单的学习环 境时,就可以选用这个版本,当然,针对一些企业也可以选择这个版本的收费版,也是有很多软件支持的。 Big Data Suite(大数据套件)是建立在Eclipse之类的IDE之上的,其附加的插件极大地方便了大数据应用的开发。用户可以在自己熟悉的开发环境之内创建、构建并部署大数据服务,并且生成所有的 代码,从而做到不用编写、调试、分析和优化MapReduce代码。大数据套件提供了图形化的工具来为你的大数据服务进行建模,所有需要的代码都是自动生成的,只需配置某些参数即可实现复杂的大数 据作业。当企业用户需要不同的数据源集成、自动代码生成或大数据作业自动图形化调度时,就可以选择使用大数据套件。 1.3 本章小结 通过本章的介绍,相信大家对大数据有了一个比较感性的认识,那接下来学习什么呢? 接下来的内容就是大数据技术涉及的相关技术。在本书中,大数据技术仅指软件层面,比如使用Hadoop生态圈软件等,而非硬件平台。这里的硬件平台主要指的是把所有硬件资源整合,使其虚拟化一 个资源池的概念,涉及的技术有OpenStack、亚马逊云平台、阿里云平台等。 在后面的章节中,主要介绍Hadoop生态圈的相关技术,如HDFS、YARN、MapReduce、HBase、Hive、Pig、Spark、Oozie等。每个章节采用理论加实践的方式,使读者能够在理解相关技术原理的基础 上,动手操作,加深理解,做到看完本书就能直接上手实践。 “授人以鱼不如授人以渔”,期望本书能成为愿意学习大数据、愿意加入到大数据开发行列的相关人员的一盏指路明灯,愿读者能乐享其中。 第2章 大数据存储与运算利器Hadoop 本章主要介绍了Hadoop框架的概念、架构、组件、生态系统以及Hadoop相关编程,特别是针对Hadoop组件HDFS、MapReduce、YARN,Hadoop MapReduce编程做了较详细的介绍。在介绍各个知识点的 同时,结合动手实践章节,帮助读者理解对应的内容。 2.1 Hadoop概述 2.1.1 Hadoop简介 随着现代社会的发展,各种信息数据存量与增量都非常大,很多情况下需要我们能够对TB级,甚至PB级数据集进行存储和快速分析,然而单机的计算机,无论是硬盘存储、网络IO、计算CPU还是内存 都是非常有限的。针对这种情况,Hadoop应运而生。 那么,Hadoop是什么呢?我们可以很容易在一些比较权威的网站上找到它的定义,例如:Hadoop是一个由Apache基金会所开发的分布式系统基础架构,它可以使用户在不了解分布式底层细节的情 况下开发分布式程序,充分利用集群的威力进行高速运算和存储。 从其定义就可以发现,它解决了两大问题:大数据存储、大数据分析。也就是Hadoop的两大核心:HDFS和MapReduce。 HDFS(Hadoop Distributed File System)是可扩展、容错、高性能的分布式文件系统,异步复制,一次写入多次读取,主要负责存储。 MapReduce为分布式计算框架,主要包含map(映射)和reduce(归约)过程,负责在HDFS上进行计算。 要深入学习Hadoop,就不得不提到Google的3篇相关论文,也就是Hadoop的基础理论。 ·2003年发表的The Google File System,奠定了“首个商用的超大型分布式文件系统”,从而验证这种分布式文件系统架构是可行的。 ·2004年发表的MapReduce:Simplifed Data Processing on Large Clusters,汲取了函数式编程设计思想,倡导把计算移动到数据思想,该思想的应用大大加快了数据的处理分析。 ·2006年发表的Bigtable:A Distributed Storage System for Structured Data,这一论文同样也是告诉大家,这种分布式数据库的架构是可行的。 说到这里,我们来简单了解下Hadoop的发展历史,如图2-1所示。 图2-1 Hadoop发展历史 20022004年,第一轮互联网泡沫刚刚破灭,很多互联网从业人员都失业了。我们的“主角”Doug Cutting也不例外,他只能写点技术文章赚点稿费来养家糊口。但是Doug Cutting不甘寂寞,怀着 对梦想和未来的渴望,与他的好朋友Mike Cafarella一起开发出一个开源的搜索引擎Nutch,并历时一年把这个系统做到能支持亿级网页的搜索。但是当时的网页数量远远不止这个规模,所以两人不断改 进,想让支持的网页量再多一个数量级。 在2003年和2004年,Google分别公布了GFS和MapReduce两篇论文。Doug Cutting和Mike Cafarella发现这与他们的想法不尽相同,且更加完美,完全脱离了人工运维的状态,实现了自动化。 在经过一系列周密考虑和详细总结后,2006年,Dog Cutting放弃创业,随后几经周折加入了Yahoo公司(Nutch的一部分也被正式引入),机缘巧合下,他以自己儿子的一个玩具大象的名字 Hadoop命名了该项目。 当系统进入Yahoo以后,项目逐渐发展并成熟了起来。首先是集群规模,从最开始几十台机器的规模发展到能支持上千个节点的机器,中间做了很多工程性质的工作;然后是除搜索以外的业务开 发,Yahoo逐步将自己广告系统的数据挖掘相关工作也迁移到了Hadoop上,使Hadoop系统进一步成熟化了。 2007年,纽约时报在100个亚马逊的虚拟机服务器上使用Hadoop转换了4TB的图片数据,更加加深了人们对Hadoop的印象。 在2008年的时候,一位Google的工程师发现要把当时的Hadoop放到任意一个集群中去运行是一件很困难的事情,所以就与几个好朋友成立了一个专门商业化Hadoop的公司Cloudera。同 年,Facebook团队发现他们很多人不会写Hadoop的程序,而对SQL的一套东西很熟,所以他们就在Hadoop上构建了一个叫作Hive的软件,专门用于把SQL转换为Hadoop的MapReduce程序。 2011年,Yahoo将Hadoop团队独立出来,成立了一个子公司Hortonworks,专门提供Hadoop相关的服务。 说了这么多,那Hadoop有哪些优点呢? Hadoop是一个能够让用户轻松架构和使用的分布式计算的平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。其优点主要有以下几个。 ·高可靠性:Hadoop按位存储和处理数据的能力值得人们信赖。 ·高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。 ·高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。 ·高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。 ·低成本:与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,Hadoop是开源的,项目的软件成本因此会大大降低。 ·Hadoop带有用Java语言编写的框架,因此运行在Linux生产平台上是非常理想的,Hadoop上的应用程序也可以使用其他语言编写,比如C+。 2.1.2 Hadoop存储HDFS Hadoop的存储系统是HDFS(Hadoop Distributed File System)分布式文件系统,对外部客户端而言,HDFS就像一个传统的分级文件系统,可以进行创建、删除、移动或重命名文件或文件夹等操 作,与Linux文件系统类似。 但是,Hadoop HDFS的架构是基于一组特定的节点构建的(见图2-2),这些节点包括名称节点(NameNode,仅一个),它在HDFS内部提供元数据服务;第二名称节点(Secondary NameNode),名称节点的帮助节点,主要是为了整合元数据操作(注意不是名称节点的备份);数据节点(DataNode),它为HDFS提供存储块。由于仅有一个NameNode,因此这是HDFS的一个缺 点(单点失败,在Hadoop2.X后有较大改善)。 图2-2 Hadoop HDFS架构 存储在HDFS中的文件被分成块,然后这些块被复制到多个数据节点中(DataNode),这与传统的RAID架构大不相同。块的大小(通常为128MB)和复制的块数量在创建文件时由客户机决定。名称 节点可以控制所有文件操作。HDFS内部的所有通信都基于标准的TCP/IP协议。 关于各个组件的具体描述如下所示: (1)名称节点(NameNode) 它是一个通常在HDFS架构中单独机器上运行的组件,负责管理文件系统名称空间和控制外部客户机的访问。NameNode决定是否将文件映射到DataNode上的复制块上。对于最常见的3个复制块,第 一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。 (2)数据节点(DataNode) 数据节点也是一个通常在HDFS架构中的单独机器上运行的组件。Hadoop集群包含一个NameNode和大量DataNode。数据节点通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。 数据节点响应来自HDFS客户机的读写请求。它们还响应来自NameNode的创建、删除和复制块的命令。名称节点依赖来自每个数据节点的定期心跳(heartbeat)消息。每条消息都包含一个块报 告,名称节点可以根据这个报告验证块映射和其他文件系统元数据。如果数据节点不能发送心跳消息,名称节点将采取修复措施,重新复制在该节点上丢失的块。 (3)第二名称节点(Secondary NameNode) 第二名称节点的作用在于为HDFS中的名称节点提供一个Checkpoint,它只是名称节点的一个助手节点,这也是它在社区内被认为是Checkpoint Node的原因。 如图2-3所示,只有在NameNode重启时,edits才会合并到fsimage文件中,从而得到一个文件系统的最新快照。但是在生产环境集群中的NameNode是很少重启的,这意味着当NameNode运行很 长时间后,edits文件会变得很大。而当NameNode宕机时,edits就会丢失很多改动,如何解决这个问题呢? 图2-3 名称节点功 fsimage是Namenode启动时对整个文件系统的快照;edits是在Namenode启动后对文件系统的改动序列。 如图2-4所示,Secondary NameNode会定时到NameNode去获取名称节点的edits,并及时更新到自己fsimage上。这样,如果NameNode宕机,我们也可以使用Secondary-Namenode的信息来 恢复NameNode。并且,如果SecondaryNameNode新的fsimage文件达到一定阈值,它就会将其拷贝回名称节点上,这样NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时 间。 图2-4 NameNode帮助节点SecondaryNameNode 举个数据上传的例子来深入理解下HDFS内部是怎么做的,如图2-5所示。 图2-5 HDFS文件上传 文件在客户端时会被分块,这里可以看到文件被分为5个块,分别是:A、B、C、D、E。同时为了负载均衡,所以每个节点有3个块。下面来看看具体步骤: 1)客户端将要上传的文件按128MB的大小分块。 2)客户端向名称节点发送写数据请求。 3)名称节点记录各个DataNode信息,并返回可用的DataNode列表。 4)客户端直接向DataNode发送分割后的文件块,发送过程以流式写入。 5)写入完成后,DataNode向NameNode发送消息,更新元数据。 这里需要注意: 1)写1T文件,需要3T的存储,3T的网络流量。 2)在执行读或写的过程中,NameNode和DataNode通过HeartBeat进行保存通信,确定DataNode活着。如果发现DataNode死掉了,就将死掉的DataNode上的数据,放到其他节点去,读取时, 读其他节点。 3)宕掉一个节点没关系,还有其他节点可以备份;甚至,宕掉某一个机架也没关系;其他机架上也有备份。 2.1.3 Hadoop计算MapReduce MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(归纳)”以及它们的主要思想,都是从函数式编程语言借来的,还有从 矢量编程语言借来的特性。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归纳)函数,用来保证所有映射的键值对中的每一个共享相同的键组,如图2-6所示。 图2-6 Map/Reduce简单理解 下面将以Hadoop的“Hello World”例程单词计数来分析MapReduce的逻辑,如图2-7所示。一般的MapReduce程序会经过以下几个过程:输入(Input)、输入分片(Splitting)、Map阶段、 Shuffle阶段、Reduce阶段、输出(Final result)。 图2-7 Hadoop MapReduce单词计数逻辑 1)输入就不用说了,数据一般放在HDFS上面就可以了,而且文件是被分块的。关于文件块和文件分片的关系,在输入分片中说明。 2)输入分片:在进行Map阶段之前,MapReduce框架会根据输入文件计算输入分片(split),每个输入分片会对应一个Map任务,输入分片往往和HDFS的块关系很密切。例如,HDFS的块的大小 是128MB,如果我们输入两个文件,大小分别是27MB、129MB,那么27MB的文件会作为一个输入分片(不足128M会被当作一个分片),而129MB则是两个输入分片(129-1281,不足128MB,所 以1MB也会被当作一个输入分片),所以,一般来说,一个文件块会对应一个分片。如图2-7所示,Splitting对应下面的三个数据应该理解为三个分片。 3)Map阶段:这个阶段的处理逻辑其实就是程序员编写好的Map函数,因为一个分片对应一个Map任务,并且是对应一个文件块,所以这里其实是数据本地化的操作,也就是所谓的移动计算而不是 移动数据。如图2-7所示,这里的操作其实就是把每句话进行分割,然后得到每个单词,再对每个单词进行映射,得到单词和1的键值对。 4)Shuffle阶段:这是“奇迹”发生的地方,MapReduce的核心其实就是Shuffle。那么Shuffle的原理呢?Shuffle就是将Map的输出进行整合,然后作为Reduce的输入发送给Reduce。简单理解就 是把所有Map的输出按照键进行排序,并且把相对键的键值对整合到同一个组中。如图2-7所示,Bear、Car、Deer、River是排序的,并且Bear这个键有两个键值对。 5)Reduce阶段:与Map类似,这里也是用户编写程序的地方,可以针对分组后的键值对进行处理。如图2-7所示,针对同一个键Bear的所有值进行了一个加法操作,得到这样的键值对。 6)输出:Reduce的输出直接写入HDFS上,同样这个输出文件也是分块的。 说了这么多,其实MapReduce的本质用一张图可以完整地表现出来,如图2-8所示。 图2-8 MapReduce本质 MapReduce的本质就是把一组键值对经过Map阶段映射成新的键值对;接着经过Shuffle/Sort阶段进行排序和“洗牌”,把键值对排序,同时把相同的键的值整合;最后经过 Reduce阶段,把整合后的键值对组进行逻辑处理,输出到新的键值对。这样的一个过程,其实就是MapReduce的本质。 Hadoop MapReduce可以根据其使用的资源管理框架不同,而分为MR v1和YARN/MR v2版本,如图2-9所示。 在MR v1版本中,资源管理主要是Jobtracker和TaskTracker。Jobtracker主要负责:作业控制(作业分解和状态监控),主要是MR任务以及资源管理;而TaskTracker主要是调度Job的每一个子任务 task;并且接收JobTracker的命令。 图2-9 MapReduce发展历史 在YARN/MR v2版本中,YARN把JobTracker的工作分为两个部分: 1)ResourceManager(资源管理器)全局管理所有应用程序计算资源的分配。 2)ApplicationMaster负责相应的调度和协调。 NodeManager是每一台机器框架的代理,是执行应用程序的容器,监控应用程序的资源(CPU、内存、硬盘、网络)使用情况,并且向调度器汇报。 2.1.4 Hadoop资源管理YARN 在上一节中我们看到,当MapReduce发展到2.x时就不使用JobTracker来作为自己的资源管理框架,而选择使用YARN。这里需要说明的是,如果使用JobTracker来作为Hadoop集群的资源管理框架 的话,那么除了MapReduce任务以外,不能够运行其他任务。也就是说,如果我们集群的MapReduce任务并没有那么饱满的话,集群资源等于是白白浪费的。所以提出了另外的一个资源管理架构 YARN(Yet Another Resource Manager)。这里需要注意,YARN不是JobTracker的简单升级,而是“大换血”。同时Hadoop 2.X也包含了此架构。Apache Hadoop 2.X项目包含以下模块。 ·Hadoop Common:为Hadoop其他模块提供支持的基础模块。 ·HDFS:Hadoop:分布式文件系统。 ·YARN:任务分配和集群资源管理框架。 ·MapReduce:并行和可扩展的用于处理大数据的模式。 如图2-10所示,YARN资源管理框架包括ResourceManager(资源管理器)、Applica-tionMaster、NodeManager(节点管理器)。各个组件描述如下。 图2-10 YARN架构 (1)ResourceManager ResourceManager是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(ApplicationManager,AM)。 Scheduler负责分配最少但满足Application运行所需的资源量给Application。Scheduler只是基于资源的使用情况进行调度,并不负责监视/

    注意事项

    本文(Hadoop与大数据挖掘.html.pdf)为本站会员(紫竹语嫣)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开