Hadoop基本原理与入门实践.ppt
- 文档编号:18074193
- 上传时间:2023-08-12
- 格式:PPT
- 页数:119
- 大小:6.35MB
Hadoop基本原理与入门实践.ppt
《Hadoop基本原理与入门实践.ppt》由会员分享,可在线阅读,更多相关《Hadoop基本原理与入门实践.ppt(119页珍藏版)》请在冰点文库上搜索。
Hadoop基本原理与入门实践,网络文化与数字传播中心北京市重点实验室,讲述内容,干货奉上第1章Hadoop的起源第2章hadoop环境配置第3章Hadoop实战(wordcount与倒排索引)更多内容第4章Hadoop细节,什么是大数据,一个交易系统中的大数据是什么看看现在公司核心业务是什么;并由此产生了多少数据,又有多少数据是公司要处理的。
但是一个传统平台并没有这么高的成本效益来处理大数据;企业需要一个很好的平台能够搜集所有有效的数据:
有效地处理大量数据,与系统进行交互和通信这就是Hadoop。
那么小型数据平台和大型数据平台又有什么区别?
首先水平扩展性,这是一个很有挑战性的问题;必须能够方便的使用并且能够非常灵活在一些不同的应用中使用,也能在虚拟的云计算中使用的平台。
这就是企业所期待的平台大数据平台。
hadoop的起源,Hadoop开始时时nutch的一个子项目,而nutch又是ApacheLucene的子项目。
这三个项目都是由DoungCutting创立,每个项目都是上一个项目的演进。
Lucene是搜索引擎开发工具包,提供了一个纯Java的高性能全文检索,他可以方便嵌入实际应用中实现全文搜索、索引功能。
Nutch项目始于2002年,是以Lucene为基础的实现的搜索引擎应用。
Lucene为nutch提供了文本搜索和索引API,Nutch不光有搜索功能,还有数据抓取功能。
很快,DougCutting和Mike(Hadoop和Nutch的另一位创始人)就意识到,他们的架构无法扩展支持数以十亿的网页。
这时候,Google的研究人员在2003ACM会议上发表描述了谷歌的分布式文件系统,即GFS的论文,即时为他们提供了帮助,解决了网络抓取和索引过程中产生大量文件存储的需求,于是,他们开始写GFS的一个开源实现,即Nutch的分布式文件系统,NDFS。
2004年,2004年,google发表论文介绍了他们的MapReduce系统。
2005年,Nutch开发人员在Nutch上实现了第一个MapReduce系统,并在年中实现了算法完全移植。
这样,Nutch的NDFS和MapReduce实现不只是适用于搜索领域。
2006年2月,开发人员将NDFS和MapReduce移出了Nutch形成了Lucene的一个子项目,称为Hadoop。
与此同时,创始人Doung加入了yahoo,yahoo将Hadoop发展成一个能够处理Web数据的系统。
2008年2月,Yahoo!
宣布其搜索引擎使用的索引是在一个拥有1万个内核的Hadoop集群上构建的。
2008年1月,Hadoop称为Apache的顶级项目。
至今,除了Yahoo!
外,还有Facebook等其他公司使用Hadoop架构。
2008年4月,Hadoop打破世界纪录,成为最快的TB级别排序系统。
通过一个910个节点的集群,Hadoop在209秒内完成对1TB的数据的排序。
2008年11月,Google的报告中声称,它的MapReduce对1TB排序只用了68秒。
2009年5月,Yahoo!
的团队排序用了62秒。
什么是hadoop?
它能干什么?
诞生背景:
谷歌面对的数据和计算难题,1.大量的网页怎么存储?
2.搜索算法,什么是hadoop?
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。
充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。
HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。
HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streamingaccess)文件系统中的数据。
Hadoop的框架最核心的设计就是:
HDFS和MapReduce。
HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
Hadoop体系结构,HDFS(HadoopDistributedFileSystem)和Mapreduce是hadoop的两大核心HDFS(文件系统)实现分布式存储的底层支持Mapreduce(编程模型)实现分布式并行任务处理的程序支持,Hadoop子项目家族,HadoopHDFS,HDFS:
采用Master/Slave结构模型,MasterNameNodeJobTracker,DataNodeTaskTracker,DataNodeTaskTracker,DataNodeTaskTracker,DataNodeTaskTracker,SecondaryNameNode,HDFS术语,HDFS主要组件的功能,NameNodeDataNode存储元数据存储文件内容元数据保存在内存中文件内容保存在磁盘,HadoopMapReduce也采用了Master/Slave(M/S)架构,MapReduce术语,MapReduce,第二章hadoop环境配置,孩儿们操练起来!
实验环境,1.PC:
linux环境:
vmware虚拟机下unbuntu14.042或windows环境:
windows+Cygwin2.java环境:
javaversion1.7.0_753.Apache官网下载hadoop2.6.04.SSH:
windows下可以使用SecureCRT或putty等sshclient程序,作用是用来远程连接linux服务器,linux下可以直接使用ssh命令,下载Hadoop,Hadoop目录结构,为什么要配环境变量,1.告诉计算机Hadoop来了:
例如输命令调用Hadoop时告诉计算机hadoop的位置,配置PATH路径。
2.告诉Hadoop计算机的信息:
将Hadoop部署到计算机上,并用hadoop完成一项工作时需要计算机的一些资源,例如登陆HDFS时需要用到计算机端口。
3.Hadoop工作时需要按需求配置一些参数,例如告诉Hadoop做分布式运算时有多少个节点。
演出开始Hadoop三种运行模式,单机模式:
只有一个JVM进程,没有分布式,不使用HDFS,伪分布式模式:
只有一台机器,每个Hadoop守护进程都是一个独立的JVM进程,通常用于调试。
完全分布式模式:
运行于多台机器上,真实环境。
Hadoop三种运行模式,1.单机模式:
安装简单,几乎不用作任何配置,但仅限于调试用途2.伪分布模式:
在单节点上同时启动namenode、datanode、jobtracker、tasktracker、secondarynamenode等5个进程,模拟分布式运行的各个节点3.完全分布式模式:
正常的Hadoop集群,由多个各司其职的节点构成,Hadoop配置有关文件,Hadoop伪分布环境搭建步骤:
1.配置系统环境变量:
/etc/profile2.配置hadoop环境变量:
修改hadoop目录以下文件hadoop-env.sh、mapred-site.xml、core-site.xmlhdfs-site.xml、yarn-site.xml3.SSH免密码登陆,Hadoop伪分布环境搭建1.配置etc/profile添加:
exportJAVA_HOME=/home/flamingo/jdk1.7.0_75exportHADOOP_HOME=/home/flamingo/hadoop-2.6.0exportCLASSPATH=$CLASSPATH:
$JAVA_HOME/lib:
$JAVA_HOME/jre/libexportPATH=$PATH:
$JAVA_HOME/bin;$PATH:
$HADOOP_HOME/bin2.配置hadoop-env.sh添加:
exportJAVA_HOME=/home/flamingo/jdk1.7.0_75,3.修改hadoop-2.6.0文件权限为用户权限:
默认没有mapred-site.xml文件,复制mapred-site.xml.template一份,并把名字改为mapred-site.xml4.配置下面4个重要文件:
mapred-site.xmlcore-site.xmlhdfs-site.xmlyarn-site.xml,mapred-site.xmlmapred.job.trackerMaster.hadoop:
9001HostorIPandportofJobTracker.,core-site.xmlhadoop.tmp.dir/home/flamingo/hadoop-2.6.0/tmpAbaseforothertemporarydirectories.fs.default.namehdfs:
/Master.hadoop:
9000,hdfs-site.xmldfs.replication1dfs.name.dir/home/flamingo/hadoop-2.6.0/dfs/namedfs.data.dir/home/flamingo/hadoop-2.6.0/dfs/data,yarn-site.xml:
yarn.nodemanager.aux.servicesmapreduce_shuffle,SSH免密码登陆1、安装SSH:
sudoapt-getinstallssh生成公钥与私钥:
ssh-keygen-trsa2.ls-al/home/flamingo看是否创建好.ssh目录3.创建.ssh目录:
mkdir/home/flamingo/.ssh4.将公钥加入到用于认证的公钥文件中:
进入.ssh目录:
cd.sshcpid_rsa.pubauthorized_keys5.免密码登陆:
sshlocalhost配置完成!
登陆HDFS格式化NameNode:
bin/hadoopnamenode-format启动HDFS:
start-dfs.sh,start-yarn.sh或者直接sbin/start-all.sh查看web页面信息:
localhost:
50070,Eclipse下搭建Hadoop2.6.0开发环境,1.安装eclipse2.下载hadoop对应版本的eclipse插件。
3.把插件放到eclipse/plugins目录下4.重启eclipse,打开WindowsPreferences后,在窗口左侧会有HadoopMap/Reduce选项,点击此选项,在窗口右侧设置Hadoop安装路径。
5.配置Map/ReduceLocations。
在Window-ShowView中打开Map/ReduceLocations.在Map/ReduceLocations中新建一个HadoopLocation。
在这个View中,右键-NewHadoopLocation。
在弹出的对话框中你需要配置Locationname,如Hadoop,还有Map/ReduceMaster和DFSMaster。
这里面的Host、Port分别为你在mapred-site.xml、core-site.xml中配置的地址及端口。
第三章Hadoop实战(wordcount),先来说说mapreduce编程模型,从MapReduce自身的命名特点可以看出,MapReduce由两个阶段组成:
Map和Reduce。
用户只需编写map()和reduce()两个函数,即可完成简单的分布式程序的设计。
map()函数以key/value对作为输入,产生另外一系列key/value对作为中间输出写入本地磁盘。
MapReduce框架会自动将这些中间数据按照key值进行聚集,且key值相同(用户可设定聚集策略,默认情况下是对key值进行哈希取模)的数据被统一交给reduce()函数处理。
reduce()函数以key及对应的value列表作为输入,经合并key相同的value值后,产生另外一系列key/value对作为最终输出写入HDFS。
MapReduce核心功能,Mapreduce版“HelloWorld”WordCount功能:
统计输入文件中的每个单词出现的次数在mapreduce中,可以这样编写(伪代码):
HDFS的上传和下载,通过ecplipse通过命令行bin/hadoopfs-put/本地路径/hdfs路径bin/hadoopfs-get/hdfs路径/本地路径,Mapreduce能处理哪些问题?
MapReduce能够解决的问题有一个共同特点:
任务可以被分解为多个子问题,且这些子问题相对独立,彼此之间不会有牵制,待并行处理完这些子问题后,任务便被解决。
谷歌在论文中提到了MapReduce的一些典型应用包括分布式grep、URL访问频率统计、Web连接图反转、倒排索引构建、分布式排序等,稍微复杂一些如K-means聚类、朴素贝叶斯分类问题,都可以用mapreduce的模型建立分布式运算来解决。
Mapreduce不能处理哪些问题?
不能划分为多个任务的问题,如:
1.Fibonacci数值计算:
Fibonacci数值计算时,下一个结果需要依赖于前面的计算结果,也就是说,无法将该问题划分成若干个互不相干的子问题,因而不能用MapReduce解决。
2.层次聚类法。
层次聚类法是应用最广泛的聚类算法之一。
其主要思想是,开始时,将每个对象归为一类,然后不断迭代,直到所有对象合并成一个大类(或者达到某个终止条件);在每轮迭代时,需计算两两对象间的距离,并合并距离最近的两个对象为一类。
该算法需要计算两两对象间的距离,也就是说每个对象和其他对象均有关联,因而该问题不能被分解成若干个子问题,进而不能用MapReduce解决。
倒排索引,1.现有一批电话清单,记录了用户A拨打给用户B的记录2.需要做一个倒排索引,记录拨打给B用户所有A的用户,1326459585710086123425234231008612312312123132642039823123321312120523525353441008614232423212120,1008613264595857丨12342523423丨52352535344132642039812312312123丨12023123321312丨14232423212丨,输出格式:
算法思路,源文件,分割原始数据以被叫作为key以主叫作为value,拥有相同被叫的主叫号码们把主叫号码汇总输出倒排索引,输出到HDFS,10086132645958571234252342352352535344,123425234231008612312312123132642039823123321312120,100861326459585713264203981231231212312023123321312,1008613264595857丨12342523423丨52352535344132642039812312312123丨12023123321312丨14232423212丨,第四章关于hadoop的更多细节,Hadoop名字的起源,Hadoop这个名字不是一个缩写,它是一个虚构的名字。
该项目的创建者DougCutting如下解释Hadoop这一名称的来历:
这个名字是我的孩子给一头吃饱了的棕黄色大象取的。
我的命名标准是简短,容易发音和拼写,没有太多的含义,并且不会被用于别处。
小孩子是这方面的高手。
Googol就是小孩子起的名字。
Hadoop子项目家族,Hadoop子项目家族,Hadoop家族成员介绍HadoopCommonHadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:
配置文件和日志操作等。
AvroAvro是dougcutting主持的RPC项目,有点类似Google的protobuf和Facebook的thrift。
avro用来做以后hadoop的RPC,使hadoop的RPC模块通信速度更快、数据结构更紧凑。
(RPC:
RemoteProcedureCallProtocol远程过程调用协议)ChukwaChukwa是基于Hadoop的大集群监控系统,由yahoo贡献。
HBase基于HadoopDistributedFileSystem,是一个开源的,基于列存储模型的分布式数据库。
Hivehive类似CloudBase,也是基于hadoop分布式计算平台上的提供datawarehouse的sql功能的一套软件。
使得存储在hadoop里面的海量数据的汇总,即席查询简单化。
hive提供了一套QL的查询语言,以sql为基础,使用起来很方便。
(数据库是面向事务的设计,数据仓库是面向主题设计的。
)Tip:
还记得数据仓库和数据库的区别吗?
传统数据库主要是为应用程序进行数据处理,未必按照同一主题存储数据;数据仓库侧重于数据分析工作,是按照主题存储的。
这一点,类似于传统农贸市场与超市的区别市场里面,白菜、萝卜、香菜会在一个摊位上,如果它们是一个小贩卖的;而超市里,白菜、萝卜、香菜则各自一块。
也就是说,市场里的菜(数据)是按照小贩(应用程序)归堆(存储)的,超市里面则是按照菜的类型(同主题)归堆的。
PigPig是SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能。
Yahoo网格运算部门开发的又一个克隆Google的项目Sawzall。
ZooKeeperZookeeper是Google的Chubby一个开源的实现。
它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:
配置维护、名字服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
现实应用中的Hadoop,现在互联网、世界500强、中小创新企业都在某些地方、某些程度上或者在适应平台上都会用到Hadoop,而且会跨越多个不同纵向的层面。
现在通过ETL(ExtractTransformandLoad)可以从其他的新闻中搜集数据进行处理,把它放在系统上。
挖掘数据,这是一个非常普遍的用途。
其关注点是,探究数据;用观测数据找到未来的形式,丰富数据的使用。
这点经常用于Web应用程序,也是雅虎经常用到的特性。
现在Hadoop在4.2多万个电脑上使用了。
Hadoop平台的特点,特点可扩展性;其次,可控制性;第三是可靠性。
Hadoop在整个的空间不间断的运行,可以存储各种各样的数据尤其对于大多数的数据特别是很多公司投资的新数据(非传统传统结构的数据),而且它必须具有经济效益这更是不能低估和忽视的一点。
在此需要强调一下,大数据意味着高成本,特别是平台扩展和维护时产生的花费。
如果想有效的缩减成本,就需要关注Hadoop的应用和部署。
以交易系统为例,包括了网站、网址、数据系统和与客户的交流,下面还有业务情报和分析,这里会用到很多这样的系统。
这样的系统在成千上万的公司中都会用到,价值非常之高,也需要用Hadoop(角色)。
这其中会用到一些新技术,而由此产生的数据与传统的数据结构不会很匹配,这样会影响到其他的应用上的空间或性能和容量,所以就需要Hadoop来高效地把数据搜集起来对它进行处理和精炼。
云计算主要特点,是数据密集型计算方式,同时还具有移动计算的特点,即移动计算到数据,而不是移动数据到计算,因为将CPU移动到数据的代价更小。
关键技术虚拟化技术、并行计算、分布式存储、分布式数据管理,Hdoop源于Google,GFS(GoogleFileSystem):
是一个分布式文件系统,隐藏下层负载均衡、冗余复制等细节,对上层程序提供一个同一的分布式文件系统API接口。
MapReduce:
通过把大部分的分布式运算抽象为MapReduce操作,Map是把输入分解为中间的Key/Value对,Reduce是把Key/Value合并最终输出Output,这两个函数有程序员提供个系统,下层设置把Map和Reduce操作分布在集群上运行,并把结果存储在GFS上。
BigTable:
是一个大型的分布式数据库,这个数据库不是关系型数据库,而是一个巨大的表格,来存储结构化数据。
GFS设计上主要有八个特点,大文件和大数据块:
数据文件的大小普遍在GB级别,而且其每个数据块默认大小为64MB,这样做的好处是减少了元数据的大小,能使Master节点能够非常方便地将元数据放置在内存中以提升访问效率。
操作以添加为主:
因为文件很少被删减或者覆盖,通常只是进行添加或者读取操作,这样能充分考虑到硬盘线性吞吐量大和随机读写慢的特点。
支持容错:
首先,虽然当时为了设计方便,采用了单Master的方案,但是整个系统会保证每个Master都会有其相对应的复制品,以便于在Master节点出现问题时进行切换。
其次,在Chunk层,GFS已经在设计上将节点失败视为常态,所以能非常好地处理Chunk节点失效的问题。
GFS设计上主要有八个特点,高吞吐量:
虽然其单个节点的性能无论是从吞吐量还是延迟都很普通,但因为其支持上千的节点,所以总的数据吞吐量是非常惊人的。
保护数据:
首先,文件被分割成固定尺寸的数据块以便于保存,而且每个数据块都会被系统复制三份。
扩展能力强:
因为元数据偏小,使得一个Master节点能控制上千个存数据的Chunk节点。
支持压缩:
对于那些稍旧的文件,可以通过对它进行压缩,来节省硬盘空间,并且压缩率非常惊人,有时甚至接近90%。
用户空间:
虽然在用户空间运行在运行效率方面稍差,但是更便于开发和测试,还有能更好利用Linux的自带的一些OSIXAPI。
Hadoop诞生于大搜索应用,DougCutting,MapReduce|GFS|BigTable,名词解释,Hadoop,Apache开源的分布式框架。
源自GoogleGFS,BigTable,MapReduce论文。
HDFSHDFS(HadoopDistributedFileSystem),Hadoop分布式文件系统。
NameNode,HDFS命名服务器,负责与DataNode文件元信息保存。
DataNode,HDFS数据节点,负责存储数据存储并汇报给NameNode。
SecondaryNamenode,NameNode的镜像备份节点MapReduceJobTracker,hadoop的Map/Reduce调度器,负责与TackTracker通信分配计算任务并跟踪任务进度。
TaskTracker,启动和管理Map和Reduce子任务的节点。
典型部署,5-4000台服务器(8-core,8-24GBRAM,4-12TB,gig-E);两层网络架构;每个机柜20-40节点,Hadoop的版本,0.20.x是历史稳定版0.23.x是根据0.20.x的稳定版引入了federation和yarn,但缺少NN和HA1.0.x是当前稳定版,但和0.20.x系列差不多,只不过有些优化改进1.1.x是beta版2.0.x现在是alpha版,有yarn和federation的引入这点是和0.23.x是一样,但是它是基于1.x的稳定版,HadoopHDFS,Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodityhardware)上的分布式文件系统。
HDFS是一个高度容错性的系统,适合部署在廉价的机器上。
HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
HDFS放宽了一部分POS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hadoop 基本原理 入门 实践