1、,厦门大学计算机科学系 2016年版,林子雨 厦门大学计算机科学系 E-mail: 主页:http:/ 大数据处理架构Hadoop (2016春季学期),大数据技术原理与应用,http:/ 概述 2.2 Hadoop项目结构 2.3 Hadoop的安装与使用 2.4 Hadoop集群的部署与使用,欢迎访问大数据技术原理与应用教材官方网站: http:/ 欢迎访问“大数据课程学生服务站”,为学生学习大数据课程提供全方位一站式服务:http:/ 21世纪高等教育计算机规划教材 大数据技术原理与应用 概念、存储、处理、分析与应用 (2015年6月第1版) 厦门大学 林子雨 编著,人民邮电出版社 I
2、SBN:978-7-115-39287-9,2.1 概述,2.1.1 Hadoop简介 2.1.2 Hadoop发展简史 2.1.3 Hadoop的特性 2.1.4 Hadoop的应用现状,2.1.1 Hadoop简介,Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构 Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中 Hadoop的核心是分布式文件系统HDFS(Hadoop Distributed File System)和MapReduce Hadoop被公认为行业大数据标准开源软件,在
3、分布式环境下提供了海量数据的处理能力 几乎所有主流厂商都围绕Hadoop提供开发工具、开源软件、商业化工具和技术服务,如谷歌、雅虎、微软、思科、淘宝等,都支持Hadoop,2.1.2 Hadoop发展简史,Hadoop最初是由Apache Lucene项目的创始人Doug Cutting开发的文本搜索库。Hadoop源自始于2002年的Apache Nutch项目一个开源的网络搜索引擎并且也是Lucene项目的一部分在2004年,Nutch项目也模仿GFS开发了自己的分布式文件系统NDFS(Nutch Distributed File System),也就是HDFS的前身2004年,谷歌公司又
4、发表了另一篇具有深远影响的论文,阐述了MapReduce分布式编程思想2005年,Nutch开源实现了谷歌的MapReduce,Hadoop的标志,2.1.2 Hadoop发展简史,到了2006年2月,Nutch中的NDFS和MapReduce开始独立出来,成为Lucene项目的一个子项目,称为Hadoop,同时,Doug Cutting加盟雅虎2008年1月,Hadoop正式成为Apache顶级项目,Hadoop也逐渐开始被雅虎之外的其他公司使用2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统,它采用一个由910个节点构成的集群进行运算,排序时间只用了209秒 在200
5、9年5月,Hadoop更是把1TB数据排序时间缩短到62秒。Hadoop从此名声大震,迅速发展成为大数据时代最具影响力的开源分布式开发平台,并成为事实上的大数据处理标准,2.1.3 Hadoop的特性,Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方面的特性:高可靠性高效性高可扩展性高容错性成本低运行在Linux平台上支持多种编程语言,2.1.3 Hadoop的应用现状,Hadoop凭借其突出的优势,已经在各个领域得到了广泛的应用,而互联网领域是其应用的主阵地2007年,雅虎在Sunnyvale总部建立了M45一个包含了
6、4000个处理器和1.5PB容量的Hadoop集群系统Facebook作为全球知名的社交网站,Hadoop是非常理想的选择,Facebook主要将Hadoop平台用于日志处理、推荐系统和数据仓库等方面国内采用Hadoop的公司主要有百度、淘宝、网易、华为、中国移动等,其中,淘宝的Hadoop集群比较大,2.1.3 Hadoop的应用现状,Hadoop在企业中的应用架构,2.1.4 Apache Hadoop版本演变,Apache Hadoop版本分为两代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0 第一代Hadoop包含三个大版本,分别是0.2
7、0.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,变成了稳定版,而0.21.x和0.22.x则增加了NameNode HA等新的重大特性 第二代Hadoop包含两个版本,分别是0.23.x和2.x,它们完全不同于Hadoop 1.0,是一套全新的架构,均包含HDFS Federation和YARN两个系统,相比于0.23.x,2.x增加了NameNode HA和Wire-compatibility两个重大特性,2.1.4 Apache Hadoop版本演变,Apache Hadoop Hortonworks Cloudera(CDH:Cloudera Distribu
8、tion Hadoop) MapR ,2.1.5 Hadoop各种版本,选择 Hadoop版本的考虑因素: 是否开源(即是否免费) 是否有稳定版 是否经实践检验 是否有强大的社区支持,2.1.5 Hadoop各种版本,2.2 Hadoop项目结构,Hadoop的项目结构不断丰富发展,已经形成一个丰富的Hadoop生态系统,2.2 Hadoop项目结构,2.3 Hadoop的安装与使用,详细安装教程请参考厦门大学数据实验室出品的大数据技术原理与应用 第二章 大数据处理架构Hadoop 学习指南 访问地址:http:/ Hadoop安装之前的预备知识 2.3.2 安装Linux虚拟机 2.3.3
9、安装双操作系统 2.3.4 详解Hadoop的安装与使用,http:/ Hadoop安装之前的预备知识,(一)Linux的选择,(1)选择哪个Linux发行版? 在Linux系统各个发行版中,CentOS系统和Ubuntu系统在服务端和桌面端使用占比最高,网络上资料最是齐全,所以建议使用CentOS 或Ubuntu 在学习Hadoop方面,虽然两个系统没有多大区别,但是推荐使用Ubuntu操作系统 (2)选择32位还是64位? 如果电脑比较老或者内存小于2G,那么建议选择32位系统版本的Linux 如果内存大于4G,那么建议选择64位系统版本的Linux,2.3.1 Hadoop安装之前的预备
10、知识,(二)系统安装方式:选择虚拟机安装还是双系统安装,建议电脑比较新或者配置内存4G以上的电脑可以选择虚拟机安装 电脑较旧或配置内存小于等于4G的电脑强烈建议选择双系统安装,否则,在配置较低的计算机上运行LInux虚拟机,系统运行速度会非常慢 鉴于目前教师和学生的计算机硬件配置一般不高,建议在实践教学中采用双系统安装,确保系统运行速度,2.3.1 Hadoop安装之前的预备知识,(三)关于Linux的一些基础知识 Shell 是指“提供使用者使用界面”的软件(命令解析器),类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序 sudo命令 sudo是u
11、buntu中一种权限管理机制,管理员可以授权给一些普通用户去执行一些需要root权限执行的操作。当使用sudo命令时,就需要输入您当前用户的密码 输入密码 在Linux的终端中输入密码,终端是不会显示任何你当前输入的密码,也不会提示你已经输入了多少字符密码,读者不要误以为键盘没有响应 输入法中英文切换 linux中英文的切换方式是使用键盘“shift”键来切换,也可以点击顶部菜单的输入法按钮进行切换。Ubuntu自带的Sunpinyin中文输入法已经足够读者使用 Ubuntu终端复制粘贴快捷键 在Ubuntu终端窗口中,复制粘贴的快捷键需要加上 shift,即粘贴是 ctrl+shift+v,
12、2.3.1 Hadoop安装之前的预备知识,(四)Hadoop安装方式单机模式:Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试 伪分布式模式:Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件 分布式模式:使用多个节点构成集群环境来运行Hadoop,2.3.2 安装Linux虚拟机,一、材料和工具 1、下载VirtualBox虚拟机软件 2. 下载Ubuntu LTS 14.04 IS
13、O映像文件,二、步骤 (一)确认系统版本 如果选择的系统是64位Ubuntu系统,那么在安装虚拟机前,我们还要进入BIOS开启CPU的虚拟化,2.3.2 安装Linux虚拟机,(二)安装前的准备,1.打开VirtualBox,点击“创建”按钮,创建一个虚拟机 2.给虚拟机命名,选择操作系统,版本 3.选择内存大小,这里设置的1024M 4.创建虚拟硬盘 5.选择虚拟硬盘文件类型VDI 6.虚拟硬盘选择动态分配 7.选择文件存储的位置和容量大小 8.点击创建,2.3.2 安装Linux虚拟机,(三)安装Ubuntu,2.3.3 安装双操作系统,第一步:制作安装U盘 具体可参考百度经验文章 htt
14、p:/ 具体可参考百度经验文章 http:/ 14.04都可以用,默认windows优先启动 可以在电脑启动时,选择进入Ubuntu系统而不是 Windows系统,2.3.4 Hadoop的安装与使用(单机/伪分布式),Hadoop基本安装配置主要包括以下几个步骤: 创建Hadoop用户 SSH登录权限设置 安装Java环境 单机安装配置 伪分布式安装配置,详细安装配置过程请参考厦门大学数据库实验室出品教程 Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04 http:/ 在“大数据课程学生服务站”中的第二章学习指南有该教程链接地址,创建Hadoop用户,
15、如果安装 Ubuntu 的时候不是用的 “hadoop” 用户,那么需要增加一个名为 hadoop 的用户,首先按 ctrl+alt+t 打开终端窗口,输入如下命令创建新用户 :,上面这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell,接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:,可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题:,SSH登录权限设置,配置SSH的原因: Hadoop名称节点(NameNode)需要启动集群中所有机器的Hadoop守护进程,这个过程需要通过SSH登录来实现
16、。Hadoop并没有提供SSH输入密码登录的形式,因此,为了能够顺利登录每台机器,需要将所有机器配置为名称节点可以无密码登录它们,SSH是什么? SSH 为 Secure Shell 的缩写,是建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠、专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。 SSH是由客户端和服务端的软件组成,服务端是一个守护进程(daemon),它在后台运行并响应来自客户端的连接请求,客户端包含ssh程序以及像scp(远程拷贝)、slog
17、in(远程登陆)、sftp(安全文件传输)等其他的应用程序,安装Java环境,Java环境可选择 Oracle 的 JDK,或是 OpenJDK 可以在Ubuntu中直接通过命令安装 OpenJDK 7,还需要配置一下 JAVA_HOME 环境变量具体请参考网络教程:http:/ 2 可以到官网下载,需要下载 hadoop-2.x.y.tar.gz 这个格式的文件,这是编译好的,另一个包含 src 的则是 Hadoop 源代码,需要进行编译才可使用,Hadoop 2 安装文件的下载,如果读者是使用虚拟机方式安装Ubuntu系统的用户,请用虚拟机中的Ubuntu自带firefox浏览器访问本指南
18、,再点击下载地址,才能把hadoop文件下载虚拟机ubuntu中。请不要使用Windows系统下的浏览器下载,文件会被下载到Windows系统中,虚拟机中的Ubuntu无法访问外部Windows系统的文件,造成不必要的麻烦。 如果读者是使用双系统方式安装Ubuntu系统的用户,请进去Ubuntu系统,在Ubuntu系统打开firefox浏览器,再点击下载,单机安装配置,选择将 Hadoop 安装至 /usr/local/ 中,Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:,Hadoop 默认模式为非分布式模式(本地模式),无需进
19、行其他配置即可运行。,伪分布式安装配置,Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件 Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现,伪分布式安装配置,实验步骤: 修改配置文件:core-site.x
20、ml,hdfs-site.xml,mapred-site.xml 初始化文件系统hadoop namenode -format 启动所有进程start-all.sh 访问web界面,查看Hadoop信息 运行实例,伪分布式安装配置,修改配置文件 core-site.xml,hadoop.tmp.dirfile:/usr/local/hadoop/tmpAbase for other temporary directories.fs.defaultFShdfs:/localhost:9000,name为fs.defaultFS的值,表示hdfs路径的逻辑名称,hadoop.tmp.dir表示存放
21、临时数据的目录,即包括NameNode的数据,也包括DataNode的数据。该路径任意指定,只要实际存在该文件夹即可,伪分布式安装配置,修改配置文件 hdfs-site.xml,dfs.replication1dfs.namenode.name.dirfile:/usr/local/hadoop/tmp/dfs/namedfs.datanode.data.dirfile:/usr/local/hadoop/tmp/dfs/data,dfs.replication表示副本的数量,伪分布式要设置为1,dfs.namenode.name.dir表示本地磁盘目录,是存储fsimage文件的地方,dfs
22、.datanode.data.dir表示本地磁盘目录,HDFS数据存放block的地方,伪分布式安装配置,关于三种Shell命令方式的区别:1. hadoop fs 2. hadoop dfs 3. hdfs dfshadoop fs适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统 hadoop dfs只能适用于HDFS文件系统 hdfs dfs跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统,2.4.1 集群节点类型 2.4.2 集群规模 2.4.3 集群硬件配置 2.4.4 集群网络拓扑 2.4.5 集群的建立与安装 2.4.6 集群基准测试 2.4.7 在云
23、计算环境中使用Hadoop,2.4 Hadoop集群的部署与使用,2.4.1 Hadoop集群中有哪些节点类型,Hadoop框架中最核心的设计是为海量数据提供存储的HDFS和对数据进行计算的MapReduce MapReduce的作业主要包括:(1)从磁盘或从网络读取数据,即IO密集工作;(2)计算数据,即CPU密集工作 Hadoop集群的整体性能取决于CPU、内存、网络以及存储之间的性能平衡。因此运营团队在选择机器配置时要针对不同的工作节点选择合适硬件类型 一个基本的Hadoop集群中的节点主要有 NameNode:负责协调集群中的数据存储 DataNode:存储被拆分的数据块 JobTra
24、cker:协调数据计算任务 TaskTracker:负责执行由JobTracker指派的任务 SecondaryNameNode:帮助NameNode收集文件系统运行的状态信息,2.4.2 集群硬件配置,在集群中,大部分的机器设备是作为Datanode和TaskTracker工作的Datanode/TaskTracker的硬件规格可以采用以下方案: 4个磁盘驱动器(单盘1-2T),支持JBOD(Just a Bunch Of Disks,磁盘簇) 2个4核CPU,至少2-2.5GHz 16-24GB内存 千兆以太网,NameNode提供整个HDFS文件系统的NameSpace(命名空间)管理、
25、块管理等所有服务,因此需要更多的RAM,与集群中的数据块数量相对应,并且需要优化RAM的内存通道带宽,采用双通道或三通道以上内存。硬件规格可以采用以下方案: 8-12个磁盘驱动器(单盘1-2T) 2个4核/8核CPU 16-72GB内存 千兆/万兆以太网,SecondaryNameNode在小型集群中可以和NameNode共用一台机器,较大的群集可以采用与NameNode相同的硬件,2.4.3 集群规模要多大,Hadoop集群规模可大可小,初始时,可以从一个较小规模的集群开始,比如包含10个节点,然后,规模随着存储器和计算需求的扩大而扩大 如果数据每周增大1TB,并且有三个HDFS副本,然后每
26、周需要一个额外的3TB作为原始数据存储。要允许一些中间文件和日志(假定30%)的空间,由此,可以算出每周大约需要增加一台新机器。存储两年数据的集群,大约需要100台机器 对于一个小的集群,名称节点(NameNode)和JobTracker运行在单个节点上,通常是可以接受的。但是,随着集群和存储在HDFS中的文件数量的增加,名称节点需要更多的主存,这时,名称节点和JobTracker就需要运行在不同的节点上 第二名称节点(SecondaryNameNode)会和名称节点可以运行在相同的机器上,但是,由于第二名称节点和名称节点几乎具有相同的主存需求,因此,二者最好运行在不同节点上,2.4.4 集群
27、网络拓扑,普通的Hadoop集群结构由一个两阶网络构成 每个机架(Rack)有30-40个服务器,配置一个1GB的交换机,并向上传输到一个核心交换机或者路由器(1GB或以上) 在相同的机架中的节点间的带宽的总和,要大于不同机架间的节点间的带宽总和,2.4.5 集群的建立与安装,采购好相关的硬件设备后,就可以把硬件装入机架,安装并运行Hadoop 安装Hadoop有多种方法: (1)手动安装 (2)自动化安装 为了缓解安装和维护每个节点上相同的软件的负担,可以使用一个自动化方法实现完全自动化安装,比如Red Hat Linux Kickstart、Debian或者Docker 自动化安装部署工具
28、,会通过记录在安装过程中对于各个选项的回答来完成自动化安装过程。,2.4.6 Hadoop集群基准测试,如何判断一个Hadoop集群是否已经正确安装?可以运行基准测试 Hadoop自带有一些基准测试程序,被打包在测试程序JAR文件中 用TestDFSIO基准测试,来测试HDFS的IO性能 用排序测试MapReduce:Hadoop自带一个部分排序的程序,这个测试过程的整个数据集都会通过洗牌(Shuffle)传输至Reducer,可以充分测试MapReduce的性能,2.4.7 在云计算环境中使用Hadoop,Hadoop不仅可以运行在企业内部的集群中,也可以运行在云计算环境中 可以在Amazo
29、n EC2中运行Hadoop。EC2是一个计算服务,允许客户租用计算机(实例),来运行自己的应用。客户可以按需运行或终止实例,并且按照实际使用情况来付费 Hadoop自带有一套脚本,用于在EC2上面运行Hadoop 在EC2上运行Hadoop尤其适用于一些工作流。例如,在Amazon S3中存储数据,在EC2上运行集群,在集群中运行MapReduce作业,读取存储在S3中的数据,最后,在关闭集群之前将输出写回S3中;如果长期使用集群,复制S3数据到运行在EC2上的HDFS中,则可以使得数据处理更加高效,因为,HDFS可以充分利用数据的位置,S3则做不到,因为,S3与EC2的存储不在同一个节点上
30、,本章小结,Hadoop被视为事实上的大数据处理标准,本章介绍了Hadoop的发展历程,并阐述了Hadoop的高可靠性、高效性、高可扩展性、高容错性、成本低、运行在Linux平台上、支持多种编程语言等特性 Hadoop目前已经在各个领域得到了广泛的应用,雅虎、Facebook、百度、淘宝、网易等公司都建立了自己的Hadoop集群 经过多年发展,Hadoop项目已经变得非常成熟和完善,包括Common、Avro、Zookeeper、HDFS、MapReduce、HBase、Hive、Chukwa、Pig等子项目,其中,HDFS和MapReduce是Hadoop的两大核心组件 本章最后介绍了如何在
31、Linux系统下完成Hadoop的安装和配置,这个部分是后续章节实践环节的基础,附录:主讲教师,单位:厦门大学计算机科学系 E-mail: 个人网页:http:/ 数据库实验室网站:http:/,主讲教师:林子雨,扫一扫访问个人主页,林子雨,男,1978年出生,博士(毕业于北京大学),现为厦门大学计算机科学系助理教授(讲师),曾任厦门大学信息科学与技术学院院长助理、晋江市发展和改革局副局长。中国高校首个“数字教师”提出者和建设者,厦门大学数据库实验室负责人,厦门大学云计算与大数据研究中心主要建设者和骨干成员,2013年度厦门大学奖教金获得者。主要研究方向为数据库、数据仓库、数据挖掘、大数据、
32、云计算和物联网,并以第一作者身份在软件学报计算机学报和计算机研究与发展等国家重点期刊以及国际学术会议上发表多篇学术论文。作为项目负责人主持的科研项目包括1项国家自然科学青年基金项目(No.61303004)、1项福建省自然科学青年基金项目(No.2013J05099)和1项中央高校基本科研业务费项目(No.2011121049),同时,作为课题负责人完成了国家发改委城市信息化重大课题、国家物联网重大应用示范工程区域试点泉州市工作方案、2015泉州市互联网经济调研等课题。编著出版中国高校第一本系统介绍大数据知识的专业教材大数据技术原理与应用并成为畅销书籍,编著并免费网络发布40余万字中国高校第一
33、本闪存数据库研究专著闪存数据库概念与技术;主讲厦门大学计算机系本科生课程数据库系统原理和研究生课程分布式数据库大数据技术基础。具有丰富的政府和企业信息化培训经验,曾先后给中国移动通信集团公司、福州马尾区政府、福建省物联网科学研究院、石狮市物流协会、厦门市物流协会、福建龙岩卷烟厂等多家单位和企业开展信息化培训,累计培训人数达2000人以上。,附录:大数据学习教材推荐,欢迎访问大数据技术原理与应用概念、存储、处理、分析与应用教材官方网站:http:/ 库HBase、NoSQL数据库、云数据库、分布式并行编程模型MapReduce、流计算、图计算、数据可视化以及大数据在互联网、生物医学和物流等各个领域的应用。在Hadoop、HDFS、HBase和MapReduce等重要章节,安排了入门级的实践操作,让读者更好地学习和掌握大数据关键技术。本书可以作为高等院校计算机专业、信息管理等相关专业的大数据课程教材,也可供相关技术人员参考、学习、培训之用。,附录:中国高校大数据课程公共服务平台,扫一扫访问平台主页,http:/ of Computer Science, Xiamen University, 2016,