自己动手做大数据系统(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-22 21:43:40

点击下载

作者:张魁等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

自己动手做大数据系统

自己动手做大数据系统试读:

前言

一个游泳爱好者,最大的烦恼是什么?没有好的教练?缺少好的教材?也许不是。如果哪天自己能拥有一个游泳池,可随时畅游,而且维护成本很低廉,甚至免费,同时还有教练的指导和一些游泳爱好者一起,那应该是一件很美的事。对于一个大数据爱好者,如果也能拥有一个属于自己的大数据实践环境,能够方便、快捷、随时随地使用真实环境,同时还有一些实战性、生产性的项目或课件,与一些志同道合的小伙伴一起攻坚克难,应该也是一件令人期待的事。“纸上得来终觉浅,绝知此事要躬行”。要掌握一门技术,尤其像大数据相关技术,涉及的内容多,范围广,对环境的要求高,如果只是看看书、看看视频,很难深入理解,更不用说融会贯通了。一些有条件的学生,他们可以搭几个节点,组成一个微型大数据群,照着书中的一些实例练习,但这些练习往往支离破碎,缺乏系统性、生产性,更不用说包含生产性项目中的版本控制、质量管理和流程规范等。而这些对实施生产项目来说很重要,有时其重要性超过了对技术的要求。本书,就是为弥补这些内容而写的。

除了实战性、生产性的课件外,我们还提供了随时随地可操作、可实践的大数据云平台——飞谷云,这是我们自主开发的大数据平台,该平台用户可通过外网登录,与论坛及门户实现无缝连接。此外,还有很多志同道合的大数据爱好者一起学习、一起做项目。本书主要内容

第1章,介绍我们为什么需要自己动手做大数据系统。

第2章,介绍动手做大数据系统的项目背景、项目架构及相关基础知识。

第3章,介绍大数据系统环境的搭建和配置,主要包括如何搭建和配置Hadoop集群、Sqoop、Hive、HBase、ZooKeeper、Spark、MySQL等,图文并茂,内容翔实。

第4章,介绍大数据系统中数据获取相关技术,包括如何利用爬虫技术获取平面数据和使用Sqoop获取结构化数据。

第5章,介绍大数据系统中数据仓库工具Hive的使用方法及进行ETL的过程详解。

第6章,介绍大数据系统中数据库HBase的使用方法及和Hive之间的数据对接。

第7章,介绍如何使用数据展示利器R来展示HDFS中的数据。

第8章,介绍使用Spark计算模型来实时处理数据及SparkRHive组件的使用。

第9章,介绍如何搭建支撑大数据系统的云平台,以保证大数据系统的稳定性。读者范围

■ 对大数据感兴趣的院校师生。

■ 对大数据有一定的基础,还想进一步熟悉整个生态系统的大数据爱好者。勘误与支持

尽管我们仔细对待本书的写作,由于水平和能力有限,错误还是不可避免的。如果你在书中发现不妥或错误之处,请访问http://www.feiguyun.com/support,留下宝贵意见,我们将非常感谢你的支持和帮助。致谢

首先要感谢大数据实战团队,参与飞谷云大数据公益项目(www.feiguyun.com)的所有大数据爱好者,正是有了大家的支持和积极参与,才使得从飞谷一期的四个人,发展到目前飞谷七期的近四百人,短短一年多的时间,让我们真正感受到了共同坚持、诚信进取、协同分享的飞谷价值观所带来的收获和快乐,每期的项目线下启动会、交流会、项目结束总结会总能感受到大家积极参与的热情!同时也要感谢苏州大学计算机科学与技术学院何书萍老师、上海理工大学管理学院张帆老师、上海交通大学大数据分析俱乐部蒋军杰同学、中国社科院研究生院孙思栋同学、上海华师大数据分析俱乐部罗玉雪同学、上海大学黄文成同学等。

此外,要感谢飞谷管理团队的各位老师:陈健、刘军、吴嘉瑜、张勤池、王继红、张海峰、许小平、陶方震和刘李涛。诸君对飞谷大数据项目的热心参与及全力配合,是此公益项目得以持续推进的不懈动力。特别感谢为飞谷云提供实战项目的企业数据负责人;飞谷七期电商比价项目提供者——张晓雷先生及飞谷八期汽车推荐模型需求提供者——章水鑫先生,正是有了你们提供的需求、数据和业务指导,才使得飞谷大数据小伙伴们有了学习大数据的真实场景,在实践中体会大数据分析价值和魅力。

飞谷云在全国一些大学还建立了交流群,作为每个群的组织者:中国科技大学张海洋同学、河南工程学院孟祥杰同学、南京农业大学邬家栋同学、西安电子科技大学刘东航同学等,为飞谷公益项目在院校中的推广,亦发挥了积极作用,在此一并表示感谢。第1章 为什么要自己动手做大数据系统1.1 大数据时代“双11”购物的狂欢、滴滴的便捷出行、阿尔法狗(AlphaGo)的进步、聊QQ、刷微信、旅游、看病、健身等,我们已不由自主地置身于大数据时代,我们不但是大数据的创造者,同时也是大数据的体验者、受益者。随着4G的普及、移动互联网及“互联网+”的不断发展、5G的临近、物联网的不断发展,大数据与我们的关系也越来越密切,取得的成果越来越鼓舞人心,对我们的影响深远。

2015年11月初我国发布的《中共中央关于制定国民经济和社会发展第十三个五年规划的建议》提出,拓展网络经济空间,推进数据资源开放共享,实施国家大数据战略,提前布局下一代互联网,可以说这是我国推行的国家大数据战略。各招聘网的大数据人才需求日新月异,需要的大数据人数在不断增加,涉及的行业范围在不断扩展,开出的薪资也很诱人。总之,不管从国家层面还是企业、个人,大数据已经跟我们息息相关。

大数据的需求增长迅猛,但是大数据方面的人才供给却相对滞后。其原因有二:一是人才培养不够。据我们了解,现在开设大数据相关课程的院校屈指可数,有好消息是复旦大学于2015年8月成立了大数据学院,2016年9月开始招生;二是目前大数据技术的应用主要集中在“BAT”类型的互联网公司,整个技术团队的维护成本很高,这也抬高了其他科技公司使用大数据技术的门槛。

现在很多大学生或在职人员学习大数据技术,大都通过网络、博客、购买书籍等方式学习,这种学习往往效率不高,虽然书中或网上有这些内容的介绍,但很多都是理论性或概要性的,缺少具体的、详细的内容或步骤。大数据相关技术要求的面较广,包括操作系统、开发语言、数据库、网络,甚至需要一定的英语基础,虽然大数据相关技术都是开源的,如Hadoop、Sqoop、HBase、Redis、MongoDB、GraphDB、Hive、Spark、Storm、OpenStack等,但即使是工作多年且有一定经验的在职人员,自己搭建大数据环境挑战也不少,其中不少因问题多半途而废,就更不用说在校大学生了。

大数据技术实践性很强,仅仅看一些书或视频,没有实际操作,很难有深刻的理解,更不用说融会贯通了。缺乏实际操作,在具体实施项目时一遇到问题,往往会不知所措,不知如何分析、定位、处理问题,感叹书到用时方恨少。针对诸如此类的问题,我们希望通过本书对一个实战性项目的详细介绍,给正在或将学习大数据的同学或在职人员提供一些思路或帮助。1.2 实战大数据项目

目前很多想学习或正在学习大数据的人,大都面临一些问题或困惑,本书的第一个特点就是系统性,覆盖了如何利用爬虫、Sqoop等获取各种数据,如何利用HDFS、HBase等存储大数据,如何利用MapReduce、Hive、Pig、Python、Spark等技术来处理大数据,如何利用Spark及R分析展示大数据整个过程,而且这些过程我们都可以以实战项目的方式在云平台上完成,这又体现出本书的第二个特点,即操作的便捷性。同时,本书既有对大数据主要原理的概述,又不乏对一些关键细节的详细描述,如SSH、NTP等详细配置等,重点、难点部分还贴有源码,这体现了本书的第三个特点,即实战性。因此,这些内容降低了在校大学生学习、搭建、实践大数据的难度,对有一定工作经验的在职人员也有参考价值。

此外,关于大数据生态系统的每个组成部分,比如Hadoop、Hive、HBase等,专门论述的书籍有很多,本书没有对某个部分的使用方法做大而全的罗列,而是着重于组件之间如何配合工作,并以同一个案例贯穿其中,旨在让读者从宏观上对大数据实现技术有一个全面的了解。

大数据技术实践性很强,相关技术也都是开源免费的,其中包含很多组件,各个组件更新很快,相互间的关系也较紧密,大数据开发涉及知识面广、数据复杂度高。纸上得来终觉浅,如果仅仅看看书、视频、博客等,则只能了解一些表面现象,很难做到融会贯通,更不用说深刻理解了;绝知此事要躬行,要想对大数据技术有一个较全面和深刻的掌握,亲自实践必不可少,通过自己亲手搭建、开发和实践,将大大加深对各组件功能、原理、架构、关系等的理解,为系统后续维护、升级、二次开发、问题定位、问题排查、问题解决等打下良好的基础。1.3 大数据演练平台

我记得10年前大学毕业找工作时,发现企业需要的各项计算机实操技术自己都没实际做过,还是依靠自己在实验室的SQL实践进入一家外企从事DBA。进入企业后,确实感觉到企业的实际需求环境与大学学习环境有很多不同。后来依靠自己买书来学习并和互联网论坛上共同的技术交流群配合,实践了数据库、大数据开发,先后担任了某大型咨询公司的大数据开发经理,以及某互联网金融公司的大数据架构师的职务。

反过来思考,如果我们在刚毕业二、三年或在校时,就能接触到真正的“准生产”项目实践,有二、三年的实际工作经验,那么接下来的机会选择会好很多。这样的经历感受,我身边几位工作十多年的技术朋友都有同感,于是便有了飞谷云大数据公益项目,我们几个大数据爱好者秉持对10年前的自己负责的态度,来对待目前像10年前现状的在校学生,以及刚毕业不久的同学们,让大家有机会来实践在学校、实验室、公司接触不到的大数据实践技术。

据笔者了解,因为学生在校一般两年多,所以研究生导师一般接的项目偏理论和咨询,不愿涉足具体实战开发的项目,担心学生毕业后难以维护。而实验室一般是基于一个问题点来的,很难有实际商业需求的连贯性,且一般公司,也只是一个岗位对应一种技术,很难有机会接触全貌。但飞谷云环境正好能解决这个问题。

通过飞谷云大数据公益项目来真正参与进来,自己可以动手做起来。在我们的公益项目中有实际的企业大数据负责人做需求文档,飞谷云的导师作为技术负责人来做需求分析设计,参与的同学来做各岗位的工程师(数据获取工程师、数据模型工程师、数据分析工程师、数据可视化工程师等),项目每期都有启动会说明,中间有交流分享会,项目结束后有总结,以对应大家的技术实践全过程,真正让自己动手与团队动手达到协同分享的目的。

同时,大数据依赖的各项基础开发,比如shell、Python、MySQL、爬虫技术、机器学习等,都会以基础班的形式同步支持项目技术储备,真正让即使完全什么都不懂的同学,只要感兴趣想学,就可以跟着本书和飞谷云大数据公益项目动手做起来。所以不管你是在校学生、大公司某一岗位的开发人员,还是中小公司的开发者,都可以通过本书和飞谷项目来实现在个人环境中所无法企及的收获与快乐。第2章 项目背景及准备2.1 项目背景

急速增长的数据使传统的关系型数据库无所适从,如何存储大数据、如何处理大数据,如何挖掘大数据,这是大数据时代面临的一些挑战。毫无疑问,在大数据处理中,Hadoop、Spark已成为当下的王者技术,经过开源社区无数贡献者的强大推动,Hadoop以其显著的低成本、高可靠性、高性能等特性,成功征服了众多大数据处理需求的商业机构和科研团体,既有像Google、Facebook、Yahoo、阿里、百度、腾讯、华为等这样的知名企业,也有数以万计的中小企业。

大数据是一个大趋势,Hadoop又是处理大数据的大趋势,大数据实战项目就是为学习、传播Hadoop技术而设立的。2.2 项目简介

项目数据的来源主要包括大数据网站、网络金融、网上招聘、网购等。我们通过爬虫技术把这些信息抓取到HDFS或MySQL中,其他数据源通过Sqoop导入HDFS或MySQL中。然后使用MapReduce、Spark等技术对数据进行处理,处理后的数据导入Hive、HBase等,最后用Java、HiveQL、R及Spark等进行数据分析与展示,其间包括实施生产性项目的主要流程,如设计、开发、调试、问题定位及处理、版本管理等。一键实现环境的搭建,系统调度管理实现自动化,同时对系统的性能等实现实时监控。2.3 项目架构

项目使用的主要技术是开源的,如Hadoop、Hive、HBase、Spark、Ganglia、R、OpenStack、MySQL等,系统的安装调度等用Java、shell、Python等工具自主开发。项目的总体架构如图2.1所示。图2.1 项目的总体架构图2.4 操作系统

有关Linux和UNIX的知识网上有很多,这里主要介绍一些简单、实用的内容及本项目使用的操作系统,使初学者有一个大体的认识和了解。已熟悉Linux或UNIX的读者可跳过本节。

Linux与UNIX的主要区别是:Linux是开源、免费的,UNIX是商业软件;Linux能够运行在多种平台上,而UNIX大多与硬件配套。

常用的Linux及Unix版本信息如表2.1所示。表2.1 操作系统版本说明

编写脚本的语言有shell、Perl、Python等。在大多数系统上,默认的shell都是bash(即Bourne Again shell),但在几种UNIX上也用sh(Bourne shell)和ksh(Korn shell)。各种操作系统上都有shell,用shell编写的脚步可移植性好,除了其调用的命令外,需要依赖的东西不多,但如果要实现一些较复杂或高端的脚本,建议采用Perl或Python等。

分析和理解Linux或UNIX系统中的一些常见日志文件,对于调试和排查问题大有帮助。如表2.1所示,列出了几种主要日志文件的用途,Linux系统日志文件一般在/var/log目录下,HP-UX及AIX的一般在/var/adm目录下。表2.2 日志文件列表

系统说明:

U=Ubuntu,R=Red Hat和CentOS,H=HP-UX,A=AIX

本项目使用的操作系统为Ubuntu 14.0.4。

登录Ubuntu服务器,可通过GNU工具PuTTY客户端,配置如图2.2所示。图2.2 PuTTY配置

单击Open按钮,进入Linux界面,如图2.3所示。图2.3 Linux界面2.5 数据存储

目前国内大数据常用“4V”来定义,即大容量(Volume)、多类型(Variety)、高时效(Velocity)、价值密度低(Value)。大数据增长对数据存储带来的挑战不仅体现在存储容量方面,还涉及数据管理、数据处理方面,迎接这些挑战带来了数据处理技术的革命,并由此开启了大数据时代。

为了克服大数据对数据存储带来的挑战,人们对传统存储方式进行了不少革新,在提升存储容量、系统吞吐量、数据可靠性、数据维护等方面取得了较大的进展。

如表2.3所示是传统DBMS与大数据存储方面的一些比较。表2.3 数据存储模式新旧对比

本项目主要以HDFS格式存放数据,部分数据存入MySQL数据库,然后对这些数据进行处理后存入Hive及HBase等。2.6 数据处理

大数据不仅体现在数量上,也体现在复杂度上,为了应对大数据的挑战,主要从两方面入手:增加计算节点的处理能力和优化数据处理的架构。目前大数据处理采用分布式、并行处理的架构,这种架构相对于传统数据处理技术有如下创新:● 以多节点协同代替单节点能力的提升;● 使计算与数据的结合更紧密和科学;● 以容错机制代替对低故障率的要求;● 处理架构的平滑扩展。

Hadoop的大数据处理最初采用MapReduce,从2012年开始进入YARN,目前正进入Spark时代。MapReduce架构是Hadoop技术的重要内容,它提供了一种可以利用底层分布式处理环境进行并行处理的模式,并将处理过程分为两个阶段:Map和Reduce。在Map阶段,原始数据通过分片处理输入到Mapper进行过滤和转换,生成的中间数据在Reduce阶段作为Reducer的输入,经过Reducer的聚合处理,得到输出结果。MapReduce数据处理架构如图2.4所示。图2.4 MapReduce数据处理架构图

YARN最核心的改进是把MapReduce架构中的资源管理和作业调度两个功能拆分到独立的进程中。

Spark基于Map、Reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是,Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的Mapreduce的算法。其数据源可以是HDFS、HBase等。其实也可以说MapReduce、YARN、Spark三者代表了Hadoop发展的几个阶段,目前Spark非常火,是用Scala语言写的。从Spark官方文档获知,在内存运行方面Spark比MapReduce快近100倍,基于硬盘运行是MapReduce的10倍。

Spark的架构如图2.5所示。图2.5 Spark架构图

本项目数据处理主要采用YARN及Spark等技术。2.7 开发工具

Java安装版本说明如下:

Hadoop生态系统中的诸多应用,都是用Java语言开发的。本项目安装环境中使用的是JDK 1.8版本。安装后的目录位置是/home/hadoop/bigdata/java/。此外,本书中所涉及的Java开发代码也基于此版本。

如果读者机器上已经安装了JDK,但是不确定是什么版本,可以使用“java -version”命令来查看版本信息。

Python安装版本说明如下:

在本书4.1节中,会讲到使用Python语言实现网络爬虫的功能,所使用的Python版本是2.7.3开发版。飞谷云使用的操作系统是Ubuntu和CentOS,其默认安装的Python版本是2.7.3。

在第4章开始部分,我们要安装Scrapy运行环境,会重新安装Python。读者可以使用“python -V”或“python --version”命令来查看当前环境使用的Python版本。2.8 调试工具

Java模块代码的开发,使用了Eclipse作为调试工具。读者也可以使用其他开发工具来进行调试。

Python部分爬虫功能的开发,使用了Eclipse下的Python插件。关于Python的IDE工具有很多,有些还提供断点调试/单步跟踪功能。但是本项目中涉及的爬虫代码,是在Scrapy框架内实现的。Scrapy在执行时采用多线程方式,建议读者多使用日志输出来进行调试。2.9 版本管理

在飞谷云平台上有自己的代码管理服务器(目前仅提供给飞谷学院内部使用,未开放)gitlab社区版服务器来进行代码及版本管理,相关使用请参考飞谷论坛:http://www.feiguyun.com/bbs/forum.php?mod=viewthread&tid=8940&extra=page=1。第3章 大数据环境搭建和配置3.1 各组件功能说明

大数据系统的数据采集分为三类:公共数据(如微信、微博、QQ公共网站等公开的互联网数据)、企业应用程序的埋点数据(企业在开发自己的软件时会接入记录功能按钮及页面的点击等行为数据),以及我们都了解的软件系统本身用户注册及交易产生的相关用户及交易数据。

这三类数据共同流向大数据平台,在大数据平台利用维度建模理论对数据进行ETL(抽取、转换、加载),从而形成满足企业业务分析及决策的模型数据供业务分析及应用系统调用。具体的大数据系统的数据流程图及组件如图3.1所示。图3.1 大数据系统的数据流图及组件

通过图3.1可以看出大数据系统主要有以下几种工具。3.1.1 各种数据源的采集工具1. 公共数据采集工具

公共数据采集工具Python是比较经典的脚本语言,在大数据系统开发中常用作公共数据采集的爬虫工具、自动化部署安装、运维的开发工具,当然也可以用来进行数据分析开发。2. 埋点数据采集工具

企业日志信息采集工具一般有Flume、Kafka和Storm。目前Flume是互联网公司使用的比较多且相对稳定、易用的数据采集工具,该工具的优势是配置简单(直接定义数据源、数据通道和数据落地位置就可以了),并支持数据处理插件开发。而Kafka是一个流式数据采集工具,该工具的采集频率会明显高于Flume,一般企业里对Flume的采集频率都在分钟级别配置,而Kafka却是近实时的大数据采集,主要是采集数据到队列,有可能会出现重复数据,可以结合Storm的事务机制来进行数据处理,保证数据不丢失。3. 企业结构化数据采集工具

目前Sqoop是企业使用的比较成熟的同步结构化数据到大数据平台的工具,是Apache的一个顶级项目,基于Hadoop组件开发的,所以对于结构化的数据类型到大数据平台的数据类型考虑得比较全面,常见的Oracle、SQL Server、DB2、MySQL、PostgreSQL等数据类型到大数据平台数据仓库Hive层的类型转换匹配比较完善。在选择对应的JDBC时要注意官网的匹配环境,企业使用的稳定版本大多还是基于1.4版本以上的。3.1.2 企业大数据存储工具

目前Hadoop HDFS是企业公认的大数据平台数据存储工具,其备份容错机制高于传统的RAID硬盘校验机制,再加上分布式的读写高吞吐量,并随着版本的改进,安全机制得到了加强,目前其文件存储平台的地位还无其他工具可以挑战。在首次安装Hadoop后修改对应的存储配置文件,该工具启动Hadoop集群各数据节点后即可生效使用。3.1.3 企业大数据系统的数据仓库工具

Hive是基于Hadoop的数据仓库工具,通过Hive可以使用传统的RDBMS的SQL语法来实现基于HDFS的数据的ETL和数据模型的构建。企业80%的数据分层处理离线计算是通过基于Hive的SQL来构建的,并且Hive也支持Spark的计算引擎接口和分析展示的R包接口(RHive)来获取Hive构建好的模型表及逻辑。3.1.4 企业大数据系统的分析计算工具

目前Spark是公认的会取代Hadoop的MapReduce框架的大数据分析计算工具,其基于Scala函数式编程的语言和RDD(弹性分布式数据集)的架构设计,使其Spark SQL计算速度是Hive的10倍以上,加上其Spark机器学习组件,SparkR组件更是可以基于大数据存储系统直接进行计算及分析产出,大大提高了大数据系统处理海量数据的效率。不足是Spark在具体的产线应用中还有不少需要调节修复的Bug等,相对Hive来说稳定性还是不够强健。但其版本更新和Bug修复的速度也很快,所以备受互联网公司的青睐。3.1.5 企业大数据系统的数据库工具

如果说Hive是大数据系统中基于OLAP(On-Line Analysis Processing,联机分析处理)的数据仓库工具,那么可以把HBase比作基于OLTP(On-Line Transaction Processing,联机事务处理)的工具,其基于列式的存储机制可以方便地从上亿条数据中快速查询到对应的rowkey值,并且TPS可以达到万级别以上,这是普通的RDBMS系统所不能突破的瓶颈,并且HBase可以通过参数的设置做到满足业务时间内的数据一致性,从而满足基于实时风控、实时精准营销等场景的在线系统应用。但由于HBase的文件合并机制往往会影响到服务应用,在GC和数据恢复中也会导致Region不可用(笔者的项目引入HBase两年多以上场景均发生过),甚至RegionServer挂掉,因此需要设置良好的监控机制来定期运维HBase,才能真正发挥HBase的优势。3.2 大数据系统各组件安装部署配置

目前,大数据系统的安装,主流的有CDH和Apache Hadoop。CDH各兼容包已经完善,只需要按步安装即可。本书就以Apache Hadoop为例,说明原生态系统安装的步骤,主要分为两部分,首先是大数据系统依赖的环境变量,然后是对应大数据安装包的部署。3.2.1 安装的前期准备工作

大数据系统也是基于网络、硬件和操作系统之上的分布式并行计算系统,所以在实施安装部署前需要确认网络环境、服务器、操作系统及相关的基础环境配置。1. 网络环境确认

一般企业级部署,对于服务器端的网络环境主要分为两部分:一部分是单台实体机构建的安全网络环境;另一部分是由一批实体机构建的云网络环境。对于大数据系统的部署,会根据生产业务实际情况来选择部署不同的网络环境。一般由于实时的大数据系统需要支持在线应用的精准营销系统、推荐系统、风控系统对应的实时接口调用,所以会选择在与在线系统同万兆网卡网段的实体机上部署大数据系统。而非实时的大数据系统可以基于一批实体机构建的云网络上的虚机服务器来部署,可以充分利用云计算的资源池化按需分配各大数据集群节点的配置,并且可以利用网络分发节点必需的基础环境软件。

本书中的服务器端网络环境就是后者,在IDC机房的批量服务器上构建的云平台网络环境。具体细节请参考第9章“自己动手搭建支撑大数据系统的云平台”。

对于连接部署环境的客户端,通常与生产环境服务器不在一个网络中,而是通过跳板机的方式连接到生产或实战环境网络。飞谷云的客户端连接也是用户基于公网客户端连接到飞谷云的跳板机,再进入到对应的生产及实战环境的。2. 服务器确认

在部署大数据系统前需要规划好对应的集群节点及相应功能,本书实例规划如图3.2所示。图3.2 实例规划

以上客户端通过跳板机进入飞谷云环境。3. 操作系统确认

使用“uname -a”确认操作系统相关参数:

可知,本书是基于CentOS 64位系统来搭建Hadoop环境的。4. 基础环境配置确认

确认操作系统字符集是否符合业务需要:

确认在操作系统下计算机名称是否已经更改、安装用户是否已经创建,如果没有创建安装用户,则需要创建用于安装Hadoop的用户如hadoop,检查对应的hadoop用户的磁盘读写权限、磁盘空间,确保该用户可以安装部署Hadoop系统。(1)创建用户组(创建用户组hadoop):groupadd hadoop(2)创建用户(创建用户hadoop,并将用户添加到用户组中):useradd -m –g hadoop hadoopecho -e " hadoop \n hadoop " | passwd hadoop(3)修改计算机名称(更改后保存退出):vi /etc/hostname

创建完毕,可以用hadoop用户登录验证用户及权限:3.2.2 Hadoop基础环境安装及配置

网络、硬件和操作系统层面确定完毕后,就可以下载Hadoop软件包进行安装部署了,并且在系统网络之间需要NTP(网络时间协议)保持时间同步。1. 安装文件准备

对应的安装介质如下。

jdk-8u60-linux-x64.rpm,官方下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

hadoop-2.7.1.tar.gz,官方下载地址:

http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz2. 配置环境变量及无密码传输(1)在Master节点进行如下设置:vi /etc/hosts192.168.0.166 master192.168.0.167 slave01192.168.0.168 slave02

验证:cat /etc/hosts(2)对用户环境变量进行如下设置:env

配置对应的用户环境变量:vi /home/hadoop/.bashrcexport JAVA_HOME=/usr/java/jdk1.8.0_60export HADOOP_HOME=/home/hadoop/bigdata/hadoopexport HADOOP_USER_NAME=hadoopexport PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

验证:

在以上设置中,JAVA_HOME表示Java安装目录,HADOOP_HOME表示Hadoop安装目录,HADOOP_USER_NAME表示安装Hadoop时需要用到的用户,PATH表示Hadoop需要引用的启动路径包添加进系统启动程序内。(3)在master节点生成公钥,放到其余各节点上,实现master到各节点的无密码传输:[hadoop@master .ssh]$cd /home/hadoop/.ssh[hadoop@master .ssh]$ ssh-keygen

验证:[hadoop@master .ssh]$cd /home/hadoop/.ssh[hadoop@master .ssh]$ ls -la

把master节点上的公钥文件rsa.pub内容添加进authorized_keys,然后分发到各个子节点上(因为master需要无密码启动各个子节点上的bin程序,所以master是SSH客户端,各个子节点是SSH验证服务端)。[hadoop@master .ssh]$cd /home/hadoop/.ssh[hadoop@master .ssh]$cat rsa.pub >> authorized_keys[hadoop@master .ssh]$scp authorized_keys hadoop@slave01:/home/hadoop/.ssh/[hadoop@master .ssh]$scp authorized_keys hadoop@slave02:/home/hadoop/.ssh/

注意:.ssh目录、公钥、私钥的权限都有严格的要求,需要确认各节点对应的权限是否正确。● 用户目录的权限是755或700,不能是77*;● .ssh目录的权限是755;● .pub或authorized_key的权限是644;● 私钥的权限是600。

验证:3. 配置Hadoop的对应参数

将下载的Hadoop及Java文件上传到master节点上,运行以下命令解压缩安装:[hadoop@master .ssh]$yum install jdk-8u60-linux-x64.rpmtar -zxf hadoop-2.7.1.tar.gzmkdir bigdatamv hadoop-2.7.1 bigdata/cd bigdata/mv hadoop-2.7.1 hadoop

然后,可以更改hadoop目录下的配置文件参数。

提示:Hadoop的配置文件基本上都是XML文件,所有的配置都放在标签之间,一个标签里面可以存在多个标签。标签里面就是我们想要设定的属性名称;标签里面是我们想要设定的值;标签是描述属性作用的,可以不写。绝大多数配置都是在XML文件里面设置的,因为在这里做的配置对全局用户都生效,而且是永久的。并且,Hadoop的配置文件是最底层的(第一层),Hive、HBase、Spark配置参数是第二层,基于会话的命令行设置是第三层,用户自定义配置(第三层)会覆盖默认配置(第二层或第一层)。

更改core-site.xml参数(对应的参数值):vi /home/hadoop/bigdata/hadoop/etc/hadoop/core-site.xmlfs.defaultFShdfs://master:9000/ hadoop.tmp.dir /home/hadoop/bigdata/data/hadoop/tmp

更改hdfs-site.xml参数(HDFS文件系统对应的参数值):vi /home/hadoop/bigdata/hadoop/etc/hadoop/hdfs-site.xml dfs.namenode.secondary.http-address master:9001dfs.datanode.data.dirfile:/home/hadoop/bigdata/data/hadoop/hdfs/datanodedfs.namenode.name.dirfile:/home/hadoop/bigdata/data/hadoop/hdfs/namenodedfs.replication3

更改mapred-site.xml参数:vi /home/hadoop/bigdata/hadoop/etc/hadoop/mapred-site.xmlmapreduce.framework.nameyarn

更改yarn-site.xml参数:vi /home/hadoop/bigdata/hadoop/etc/hadoop/yarn-site.xmlyarn.resourcemanager.hostnamemasteryarn.nodemanager.aux-servicesmapreduce_shuffle

更改slaves文件参数:vi /home/hadoop/bigdata/hadoop/etc/hadoop/slavesslave01slave02

以上配置信息更改完毕后,把对应的.bashrc、/etc/hosts及/home/hadoop/bigdata/hadoop目录都复制到slave01、slave02对应的目录下:scp /home/hadoop/.bashrc hadoop@slave01:/home/hadoop/scp /etc/hosts hadoop@slave01:/etc/hostsscp –r /home/hadoop/bigdata/hadoop hadoop@slave01:/home/hadoop/ bigdata/scp /home/hadoop/.bashrc hadoop@slave02:/home/hadoop/scp /etc/hosts hadoop@slave02:/etc/hostsscp –r /home/hadoop/bigdata/hadoop hadoop@slave02:/home/hadoop/ bigdata/

注:以上仅是Hadoop安装的基本参数配置,关于资源池划分及相关性能参数要根据具体业务进行相应的配置,具体参数的使用场景会在飞谷公益项目中进行划分予以深入解析。4. 启动并验证Hadoop安装

启动对应的Hadoop程序:[hadoop@master hadoop]$ cd /home/hadoop/bigdata/hadoop/sbin [hadoop@master sbin]$ shstart-all.sh

显示如下:3.2.3 Hive安装及配置1. 安装文件准备

下载Hive安装包:

http://apache.fayea.com/hive/hive-1.2.1/apache-hive-1.2.1-bin.tar.gz

根据OS版本下载对应的MySQL服务器和客户端。2. 配置环境变量和安装MySQL

根据OS版本使用下载命令直接下载对应的软件包:

MySQL-client-5.5.46-1.linux2.6.x86_64.rpm、MySQL-server-5.5.46-1.linux2.6.x86_64.rpm

在Ubuntu环境下,使用以下命令安装对应的MySQL:[hadoop@master hadoop]$ sudo apt-get install mysql-server mysql-client

在CentOS环境下,使用以下命令安装MySQL:[hadoop@master hadoop]$ rpm -ivh MySQL-client-5.5.46-1.linux2.6.x86_64.rpm[hadoop@master sbin]$ rpm –ivhMySQL-server-5.5.46-1.linux2.6.x86_64.rpm#在服务目录下启动MySQL服务service mysql start#创建用户密码并登录/usr/bin/mysqladmin -uroot password '123456mysql -uroot -p123456#创建Hive元数据库并授权hive用户访问create database hivemetaalter database hivemeta character set latin1;grant all privileges on *.* to hive@"%" identified by "123456" with grant option;flush privileges;

启动MySQL,创建Hive元数据库并做相关配置。3. 配置Hive参数

配置Hive的系统环境变量:vi /home/hadoop/.bashrcexport HIVE_HOME=/home/hadoop/bigdata/hiveexport PATH=$HIVE_HOME/bin:$PATHsource /home/hadoop/.bashrcscp .bashrc hadoop@192.168.0.167:/home/hadoop/scp .bashrc hadoop@192.168.0.168:/home/hadoop/

验证(在各节点上确认默认路径):

解压缩文件并更改配置参数文件:cd /home/hadoop/bigdata/tar -zxf apache-hive-1.2.1-bin.tar.gzmv apache-hive-1.2.1-bin hivecd /home/hadoop/bigdata/hive/confcp hive-default.xml.template hive-site.xmlcp hive-env.sh.template hive-env.shcp hive-log4j.properties.template hive-log4j.properties

各配置文件主要参数更改如下:#设置Hive的环境配置目录及hadoop目录,vi编辑输入后按wq!保存退出vi /home/hadoop/bigdata/hive/conf/hive-env.shexport HADOOP_HOME=/home/hadoop/bigdata/hadoopexport HIVE_CONF_DIR=/home/hadoop/bigdata/hive/conf#设置Hive的日志存储路径,vi编辑输入后按wq!保存退出vi /home/hadoop/bigdata/hive/conf/hive-log4j.propertieshive.log.threshold=ALLhive.root.logger=INFO,DRFAhive.log.dir=/home/hadoop/bigdata/hive/loghive.log.file=hive.log#设置Hive运行文件路径及元数据库连接信息,vi编辑输入后按wq!保存退出vi /home/hadoop/bigdata/hive/conf/hive-site.xml hive.metastore.warehouse.dir hdfs://master:9000/hive/warehouse hive.exec.scratchdir hdfs://master:9000/hive/scratchdir hive.querylog.location /home/hadoop/bigdata/hive/logs javax.jdo.option.ConnectionURL jdbc:mysql://master:3306/hivemeta?createDatabaseIfNotExist=true javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName hive javax.jdo.option.ConnectionPassword 123456 hive.metastore.local false hive.metastore.uris thrift://master:90834. 验证Hive相关服务

Hive安装完成后需要启动对应的metastore服务和Hiveserver2服务,即可执行Hive的操作任务。#在metastore所在服务器master启动metastore服务[hadoop@master bin]$ nohup hive --service metastore&#在Hiveserver2所在服务器slave01启动Hiveserver2服务[hadoop@slave01 bin]$ nohup hive --service hiveserver2&</p><p>验证——查看相关服务,以及进入相关数据库和表:</p><p>进入Hive客户端创建feigu3数据库来测试验证(后续建表及加载数据请参考5.3.1节“逻辑模型创建”):3.2.4 Sqoop安装及配置</p><p>Sqoop在生产应用中主要有两个版本,即以1.4.*开头的Sqoop 1和以1.99.*开头的Sqoop 2。从选型角度来看,如果大数据平台有统一的安全平台和调度系统,采用Sqoop1部署比较简单,对应的Sqoop任务直接接入调度系统,也减少了生产系统相关的依赖和运维排查(对于Hadoop 2.2以后的版本,Sqoop 1需要根据具体的版本进行编译)。Sqoop 2相对于Sqoop1增加了安全机制和任务调度管理,如果大数据平台没有统一的安全平台和调度系统,可以基于该Sqoop 2形成统一的Sqoop数据同步、任务调度接口来运维。Sqoop 1和Sqoop 2的架构及部署对比说明如图3.3所示。图3.3 Sqoop 1和Sqoop 2的架构及部署对比说明1. Sqoop安装介质准备</p><p>Sqoop 1.4.*版本的下载地址:</p><p>http://mirror.bit.edu.cn/apache/sqoop/1.4.5/sqoop-1.4.5.bin-hadoop-2.0.4-alpha.tar.gz</p><p>Sqoop 2的下载地址:</p><p>http://mirror.bit.edu.cn/apache/sqoop/1.99.6/sqoop-1.99.6-bin-hadoop200.tar.gz</p><p>MySQL的连接驱动的下载地址:</p><p>http://download.csdn.net/download/munandong/59838112. Sqoop相关安装及配置(1)Sqoop 1的安装及配置</p><p>Sqoop 1的安装配置比较简单,直接解压缩重命名对应的组件包,配置参考Sqoop 2,只需设置基本环境变量和对应的连接Jar包即可。#解压缩安装包并重命名tar -xvf sqoop-1.4.5.bin__hadoop-2.0.4-alpha.tar.gzmv sqoop-1.4.5 sqoop(2)Sqoop 2的安装及配置</p><p>在Sqoop安装服务器上解压缩安装包并重命名,然后修改相关参数:#解压缩安装包并重命名tar -xvf sqoop-1.99.6-bin-hadoop200.tar.gzmv sqoop-1.99.6-bin-hadoop200 sqoop#添加修改Sqoop对应的环境变量参数,并使source变量文件生效vi /home/hadoop/.bashrcexport SQOOP_HOME=/home/hadoop/bigdata/sqoopexport PATH=$SQOOP_HOME/bin:$PATHexport CATALINA_HOME=$SQOOP_HOME/serverexport LOGDIR=$SQOOP_HOME/logs#修改Sqoop对应的配置参数vi /home/hadoop/bigdata/sqoop/server/conf/sqoop.propertiesorg.apache.sqoop.submission.engine.mapreduce.configuration.directory=/home/hadoop/#修改Sqoop对应的配置参数,追加对应的JAR包路径cd /home/hadoop/bigdata/sqoop/server/confvi catalina.propertiescommon.loader=/home/hadoop/bigdata/hadoop/share/hadoop/common/*.jar,/home/hadoop/bigdata/hadoop/share/hadoop/common/lib/*.jar,/home/hadoop/bigdata/hadoop/share/hadoop/hdfs/*.jar,/home/hadoop/bigdata/hadoop/hdfs/lib/*.jar,/home/hadoop/bigdata/hadoop/share/hadoop/mapreduce/*.jar,/home/hadoop/bigdata/hadoop/share/hadoop/mapreduce/lib/*.jar,/home/hadoop/bigdata/hadoop/share/hadoop/tools/*.jar,/home/hadoop/bigdata/hadoop/share/hadoop/tools/lib/*.jar,/home/hadoop/bigdata/hadoop/share/hadoop/yarn/*.jar,/home/hadoop/bigdata/hadoop/share/hadoop/yarn/lib/*.jar,/home/hadoop/bigdata/hadoop/share/hadoop/httpfs/tomcat/lib/*.jarexport#将所下载的连接驱动包复制到Sqoop的类库目录下scp /home/hadoop/bigdata/mysql-connector-java-5.1.26-bin.jar/home/hadoop/bigdata/sqoop/server/lib/3. Sqoop运行验证</p><p>启动Sqoop的Server和客户端:

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载