大数据讲座

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
source组件把数据收集来以后,临时存放在channel中。 3.2 channel组件是在agent中专用于临时存储数据的,可以存放在 memory、jdbc、file、自定义。 channel中的数据只有在sink发送成功之后才会被删除。 3.3 sink组件是用于把数据发送到目的地的组件,目的地包括hdfs、logger、 avro、thrift、ipc、file、null、hbase、solr、自定义。 4.在整个数据传输过程中,流动的是event。事务保证是在event级别。 5.flume可以支持多级flume的agent,支持扇入(fan-in)、扇出(fan-out)。
维护文件系统的目录结构 管理文件与block之间关系,block与datanode之间关系

datanode负责: 存储文件 文件被分成block存储在磁盘上 为保证数据安全,文件会有多个副本
MapReduce的架构
主从结构 主节点,只有一个: JobTracker 从节点,有很多个: TaskTrackers JobTracker负责: 接收客户提交的计算任务 把计算任务分给TaskTrackers执行 监控TaskTracker的执行情况
大数据
网络工程 金航
大数据学习路线
常用技术
Spark
性能超Hadoop百倍,算法实现仅有其1/10或1/100 Spark是一个高效的分布式计算系统,相比Hadoop,它 在性能上比Hadoop要高100倍。Spark提供比Hadoop更 上层的API,同样的算法在Spark中实现往往只有Hadoop 的1/10或者1/100的长度。Shark类似“SQL on Spark”, 是一个在Spark上数据仓库的实现,在兼容Hive的情况下, 性能最高可以达到Hive的一百倍。



Mapreduce原理

◆执行步骤: 1. map任务处理 1.1 读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。 每一个键值对调用一次map函数。 1.2 写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。 1.3 对输出的key、value进行分区。 1.4 对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中。 1.5 (可选)分组后的数据进行归约。 2.reduce任务处理 2.1 对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。 2.2 对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、 value处理,转换成新的key、value输出。 2.3 把reduce的输出保存到文件中。 例子:实现WordCountApp



集群技术的特点:
通过多台计算机完成同一个工作。达到更高的效率 两机或多机内容、工作过程等完全一样。如果一台死机, 另一台可以起作用。
Sqoop
Pig
基于hadoop的一个数据处理的框架。 MapReduce是 使用java进行开发的, Pig有一套自己的数据处理语言,Pig的数据处理过程要转 化为MR来运行。
Hadoop核心项目
HDFS: Hadoop Distributed File System 分布式文件系统 MapReduce:并行计算框架

HDFS的架构

主从结构 主节点,只有一个: namenode 从节点,有很多个: datanodes

namenode负责:


接收用户操作请求




可靠性(Reliable):hadoop能自动地维护数据的多份 副本,并且在任务失败后能自动地重新部署(redeploy) 计算任务。
Hadoop集群的物理分布
单节点物理结构
Hadoop部署方式

本地模式 伪分布模式 集群模式
分布式文件系统

数据量越来越多,在一个操作系统管辖的范围存不下了,那 么就分配到更多的操作系统管理的磁盘中,但是不方便管理 和维护,因此迫切需要一种系统来管理多台机器上的文件, 这就是分布式文件管理系统 。 是一种允许文件通过网络在多台主机上分享的文件系统,可 让多机器上的多用户分享文件和存储空间。 通透性。让实际上是通过网络来访问文件的动作,由程序与 用户看来,就像是访问本地的磁盘一般。 容错。即使系统中有某些节点脱机,整体来说系统仍然可以 持续运作而不会有数据损失。 分布式文件管理系统很多,hdfs只是其中一种。适用于一次 写入多次查询的情况,不支持并发写情况,小文件不合适。
JobTracker

负责接收用户提交的作业,负责启动、跟踪任务执行。 JobSubmissionProtocol是JobClient与JobTracker通信 的接口。 InterTrackerProtocol是TaskTracker与JobTracker通信 的接口。

TaskTracker
hadoop的整个体系结构就是构建在RPC之上的(见 org.apache.hadoop.ipc)

MapReduce概述
◆MapReduce是一种分布式计算模型,由Google提出, 主要用于搜索领域,解决海量数据的计算问题. ◆MR由两个阶段组成:Map和Reduce,用户只需要实 现map()和reduce()两个函数,即可实现分布式计算,非 常简单。 ◆这两个函数的形参是key、value对,表示函数的输入信 息。
Namenode

是整个文件系统的管理节点。它维护着整个文件系统的文 件目录树,文件/目录的元信息和每个文件对应的数据块列 表。接收用户的操作请求。 (见源码)



文件包括:
fsimage:元数据镜像文件。存储某一时段NameNode内 存元数据信息。 edits:操作日志文件。


fstime:保存最近一次checkpoint的时间


或#hadoop fs -copyFromLocal ./test.txt /test
#cd .. #hadoop fs -get /test/test.txt . 或#hadoop fs -getToLocal /test/test.txt . #hadoop fs -cp /test/test.txt /test1 #hadoop fs -rm /test1/test.txt #hadoop fs -mv /test/test.txt /test1 #hadoop fs -rmr /test1
以上这些文件是保存在linux的文件系统中。
Datanode
文件块(block):最基本的存储单位。对于文件内容而 言,一个文件的长度大小是size,那么从文件的0偏移开 始,按照固定的大小,顺序对文件进行划分并编号,划分 好的每一个块称一个Block。HDFS默认Block大小是64MB, 以一个256MB文件,共有256/64=4个Block. 不同于普通文件系统的是,HDFS中,如果一个文件小于一 个数据块的大小,并不占用整个数据块存储空间 Replication。多复本。默认是三个。



在2.5亿个整数中找出不重复的整数,注,内存2.5GB。
有40亿个邮件地址,没排过序的,然后再给一个邮件,如 何快速判断这个数是否在那40亿个数当中? 海量数据分布在100台电脑中,想个办法高效统计出这批 数据的TOP10。

集群

计算机集群是一种计算机系统, 它通过一组松散集成的计 算机软件和/或硬件连接起来高度紧密地协作完成计算工作。 集群系统中的单个计算机通常称为节点,通常通过局域网 连接。


HDFS的java访问接口—— FileSystem

写文件 create 读取文件 open 删除文件delete

创建目录 mkdirs 删除文件或目录 delete


列出目录的内容 listStatus
显示文件系统的目录和文件的元数据信息 getFileStatus

负责执行任务。
MapReduce常见算法
单词计数 数据去重 排序 Top K 选择 投影 分组



多表连接
单表关联
面试题

给定a、b两个文件,各存放50亿个url,每个url各占64字 节,内存限制是4G,让你找出a、b文件共同的url? 现有1亿个整数均匀分布,求前1K个最大的数。内存限制 为100MB。
flume是分布式的日志收集系统,把收集来的数据传送到目的地去。 2.flume里面有个核心概念,叫做agent。agent是一个java进程,运行在 日志收集节点。 3.agent里面包含3个核心组件:source、channel、sink。


3.1 source组件是专用于收集日志的,可以处理各种类型各种格式的日志 数据,包括avro、thrift、exec、jms、spooling directory、netcat、 sequence generator、syslog、http、legacy、自定义。



2.Pig的数据处理语言是数据流方式的,类似于初中做的数 学题。
3.Pig基本数据类型:int、long、float、double、 chararry、bytearray



复合数据类型:Map、Tuple、Bag
Bag的类型如{('age',31),('name','张三')}
flume
Remote Procedure Call

RPC——远程过程调用协议,它是一种通过网络从远程计算机程序上 请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传 输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI 网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网 络分布式多程序在内的应用程序更加容易。



TaskTrackers负责:
执行JobTracker分配的计算任务
Hadoop的特点
扩容能力(Scalable):能可靠地(reliably)存储和处 理千兆字节(PB)数据。 成本低(Economical):可以通过普通机器组成的服务 器群来分发以及处理数据。这些服务器群总计可达数千个 节点。 高效率(Efficient):通过分发数据,hadoop可以在数 据所在的节点上并行地(parallel)处理它们,这使得处 理非常的快速。

HDFS的Shell

#hadoop fs -ls / 查看HDFS根目录 #hadoop fs -mkdir /test 在根目录创建一个目录test #hadoop fs -mkdir /test1 在根目录创建一个目录test1 #echo -e 'hadoop second lesson' >test.txt #hadoop fs -put ./test.txt /test
Байду номын сангаас



SecondaryNameNode
HA的一个解决方案。但不支持热备。配置即可。 (见源码) 执行过程:从NameNode上下载元数据信息 (fsimage,edits),然后把二者合并,生成新的fsimage, 在本地保存,并将其推送到NameNode,同时重置 NameNode的edits. 默认在安装在NameNode节点上,但这样...不安全!

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供 程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的 调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡 眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得 进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最 后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继 续进行。

Tachyon Tachyon
吞吐量超过HDFS 300多倍 来自伯克利的分布式文件系统

AMPLab大神
Spark的核心成员Reynold Xin
UC Berkeley计算机系AMPLab的博士生, 专注于数据库以及计算机系统的研究。 AMPLab正在开发一个大数据的处理平台叫 做Berkeley Data Analytics Stack (BDAS) ,其中包括了Spark, Shark等项目。我是 Shark的作者,也是Spark的核心成员。
相关文档
最新文档