小说推荐分布式计算总结史晓慕第一阶段Word下载.docx
- 文档编号:5837774
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:12
- 大小:90.51KB
小说推荐分布式计算总结史晓慕第一阶段Word下载.docx
《小说推荐分布式计算总结史晓慕第一阶段Word下载.docx》由会员分享,可在线阅读,更多相关《小说推荐分布式计算总结史晓慕第一阶段Word下载.docx(12页珍藏版)》请在冰点文库上搜索。
∙0.20.203.X-legacystableversion
∙0.20.X-legacyversion
简介
安装Hadoop集群通常要将安装软件解压到集群内的所有机器上。
通常,集群里的一台机器被指定为NameNode,另一台不同的机器被指定为JobTracker。
这些机器是masters。
余下的机器即作为DataNode也作为TaskTracker。
这些机器是slaves。
我们用HADOOP_HOME指代安装的根路径。
通常,集群里的所有机器的HADOOP_HOME路径相同。
初始化机器
1.所有集群需要建立双向ssh信任连接
2.机器名不能包含包含下划线可以用减号
配置文件
core-site.xml
hdfs-site.xml
mapred-site.xml
参数
取值
备注
fs.default.name
NameNode的URI。
hdfs:
//主机名/
mapred.job.tracker
JobTracker的主机(或者IP)和端口。
主机:
端口。
dfs.name.dir
NameNode持久存储名字空间及事务日志的本地文件系统路径。
当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
dfs.data.dir
DataNode存放块数据的本地文件系统路径,逗号分割的列表。
当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
mapred.system.dir
Map/Reduce框架存储系统文件的HDFS路径。
比如/hadoop/mapred/system/。
这个路径是默认文件系统(HDFS)下的路径,须从服务器和客户端上均可访问。
mapred.local.dir
本地文件系统下逗号分割的路径列表,Map/Reduce临时数据存放的地方。
多路径有助于利用磁盘i/o。
mapred.tasktracker.{map|reduce}.tasks.maximum
某一TaskTracker上可运行的最大Map/Reduce任务数,这些任务将同时各自运行。
默认为2(2个map和2个reduce),可依据硬件情况更改。
dfs.hosts/dfs.hosts.exclude
许可/拒绝DataNode列表。
如有必要,用这个文件控制许可的datanode列表。
mapred.hosts/mapred.hosts.exclude
许可/拒绝TaskTracker列表。
如有必要,用这个文件控制许可的TaskTracker列表。
进阶配置
dfs.block.size
134217728
针对大文件系统,HDFS的块大小取128MB。
dfs.namenode.handler.count
40
启动更多的NameNode服务线程去处理来自大量DataNode的RPC请求。
mapred.reduce.parallel.copies
20
reduce启动更多的并行拷贝器以获取大量map的输出。
mapred.child.java.opts
-Xmx512M
为map/reduce子虚拟机使用更大的堆。
fs.inmemory.size.mb
200
为reduce阶段合并map输出所需的内存文件系统分配更多的内存。
io.sort.factor
100
文件排序时更多的流将同时被归并。
io.sort.mb
提高排序时的内存上限。
io.file.buffer.size
131072
SequenceFile中用到的读/写缓存大小。
mapred.job.tracker.handler.count
60
启用更多的JobTracker服务线程去处理来自大量TaskTracker的RPC请求。
50
tasktracker.http.threads
为TaskTracker的Http服务启用更多的工作线程。
reduce通过Http服务获取map的中间输出。
-Xmx1024M
使用更大的堆用于maps/reduces的子虚拟机
脚本命令
/data/hadoop-1.0.3/bin
hadoop
基本命令
hadoop-config.sh
hadoop-daemon.sh
hadoop-daemons.sh
rcc
slaves.sh
start-all.sh
开启所有节点
start-balancer.sh
start-dfs.sh
start-jobhistoryserver.sh
start-mapred.sh
stop-all.sh
关闭所有节点
stop-balancer.sh
stop-dfs.sh
stop-jobhistoryserver.sh
stop-mapred.sh
task-controller
进程
守护进程
配置选项
NameNode
HADOOP_NAMENODE_OPTS
DataNode
HADOOP_DATANODE_OPTS
SecondaryNamenode
HADOOP_SECONDARYNAMENODE_OPTS
JobTracker
HADOOP_JOBTRACKER_OPTS
TaskTracker
HADOOP_TASKTRACKER_OPTS
数据转换
1.拷贝在线集群数据到离线集群.
2.重启离线集群cassandra加载数据.
3.合并(compact.shcf_bookcase)
4.转换数据文件为json格式(bin/sstable2json/data/cassandra/cassandra_data/data/keyspace_user_info/cf_bookcase-f-46902-Data.db>
212.txt)
5.数据上传hdfs(hadoopfsput212.txt/user/hadoop/bookmarkAll)
Hdfs
Map/Reduce
HadoopMap/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。
一个Map/Reduce作业(job)通常会把输入的数据集切分为若干独立的数据块,由map任务(task)以完全并行的方式处理它们。
框架会对map的输出先进行排序,然后把结果输入给reduce任务。
通常作业的输入和输出都会被存储在文件系统中。
整个框架负责任务的调度和监控,以及重新执行已经失败的任务。
通常,Map/Reduce框架和分布式文件系统是运行在一组相同的节点上的,也就是说,计算节点和存储节点通常在一起。
这种配置允许框架在那些已经存好数据的节点上高效地调度任务,这可以使整个集群的网络带宽被非常高效地利用。
Map/Reduce框架由一个单独的masterJobTracker和每个集群节点一个slaveTaskTracker共同组成。
master负责调度构成一个作业的所有任务,这些任务分布在不同的slave上,master监控它们的执行,重新执行已经失败的任务。
而slave仅负责执行由master指派的任务。
应用程序至少应该指明输入/输出的位置(路径),并通过实现合适的接口或抽象类提供map和reduce函数。
再加上其他作业的参数,就构成了作业配置(jobconfiguration)。
然后,Hadoop的jobclient提交作业(jar包/可执行程序等)和配置信息给JobTracker,后者负责分发这些软件和配置信息给slave、调度任务并监控它们的执行,同时提供状态和诊断信息给job-client。
Job
JobConf代表一个Map/Reduce作业的配置,产出是一个xml.
JobConf是用户向Hadoop框架描述一个Map/Reduce作业如何执行的主要接口。
框架会按照JobConf描述的信息忠实地去尝试完成这个作业
名称
类型
描述
mapred.job.id
String
jobid
mapred.jar
String
job目录下job.jar的位置
job.local.dir
job指定的共享存储空间
mapred.tip.id
taskid
mapred.task.id
task尝试id
mapred.task.is.map
boolean
是否是maptask
mapred.task.partition
int
task在job中的id
map.input.file
map读取的文件名
map.input.start
long
map输入的数据块的起始位置偏移
map.input.length
map输入的数据块的字节数
mapred.work.output.dir
task临时输出目录
Map
Mapper将输入键值对(key/valuepair)映射到一组中间格式的键值对集合。
Map是一类将输入记录集转换为中间格式记录集的独立任务。
这种转换的中间格式记录集不需要与输入记录集的类型一致。
一个给定的输入键值对可以映射成0个或多个输出键值对。
HadoopMap/Reduce框架为每一个InputSplit产生一个map任务,而每个InputSplit是由该作业的InputFormat产生的。
概括地说,对Mapper的实现者需要重写JobConfigurable.configure(JobConf)方法,这个方法需要传递一个JobConf参数,目的是完成Mapper的初始化工作。
然后,框架为这个任务的InputSplit中每个键值对调用一次map(WritableComparable,Writable,OutputCollector,Reporter)操作。
应用程序可以通过重写Closeable.close()方法来执行相应的清理工作。
Map的数目通常是由输入数据的大小决定的,一般就是所有输入文件的总块(block)数。
Reduce
Reducer将与一个key关联的一组中间数值集归约(reduce)为一个更小的数值集。
Reducer有3个主要阶段:
shuffle、sort和reduce。
Shuffle
Reducer的输入就是Mapper已经排好序的输出。
在这个阶段,框架通过HTTP为每个Reducer获得所有Mapper输出中与之相关的分块。
Sort
这个阶段,框架将按照key的值对Reducer的输入进行分组(因为不同mapper的输出中可能会有相同的key)。
Shuffle和Sort两个阶段是同时进行的;
map的输出也是一边被取回一边被合并的。
在这个阶段,框架为已分组的输入数据中的每个<
key,(listofvalues)>
对调用一次reduce(WritableComparable,Iterator,OutputCollector,Reporter)方法。
Reduce任务的输出通常是通过调用OutputCollector.collect(WritableComparable,Writable)写入文件系统的。
应用程序可以使用Reporter报告进度,设定应用程序级别的状态消息,更新Counters(计数器),或者仅是表明自己运行正常。
Reducer的输出是没有排序的。
需要多少个Reduce?
Reduce的数目建议是0.95或1.75乘以(<
no.ofnodes>
*mapred.tasktracker.reduce.tasks.maximum)。
用0.95,所有reduce可以在maps一完成时就立刻启动,开始传输map的输出结果。
用1.75,速度快的节点可以在完成第一轮reduce任务后,可以开始第二轮,这样可以得到比较好的负载均衡的效果。
DistributedCache
DistributedCache可用于map或reducetask中分发jar包和本地库。
子jvm总是把当前工作目录加到java.library.path和LD_LIBRARY_PATH。
因此,可以通过System.loadLibrary或System.load装载缓存的库。
DistributedCache的使用是面向大规模只读数据的。
DistributedCache可将具体应用相关的、大尺寸的、只读的文件有效地分布放置。
DistributedCache是Map/Reduce框架提供的功能,能够缓存应用程序所需的文件(包括文本,档案文件,jar文件等)。
应用程序在JobConf中通过url(hdfs:
//)指定需要被缓存的文件。
DistributedCache假定由hdfs:
//格式url指定的文件已经在FileSystem上了。
Map-Redcue框架在作业所有任务执行之前会把必要的文件拷贝到slave节点上。
它运行高效是因为每个作业的文件只拷贝一次并且为那些没有文档的slave节点缓存文档。
DistributedCache根据缓存文档修改的时间戳进行追踪。
在作业执行期间,当前应用程序或者外部程序不能修改缓存文件。
distributedCache可以分发简单的只读数据或文本文件,也可以分发复杂类型的文件例如归档文件和jar文件。
归档文件(zip,tar,tgz和tar.gz文件)在slave节点上会被解档(un-archived)。
这些文件可以设置执行权限。
书签应用,是把gpv的数据,作为一个基础数据,分发到这个机器,再读出来一个map来实现join
案例:
小说书签
代码
权限问题
当新建一个文件或目录,它的所有者即客户进程的用户,它的所属组是父目录的组
每次用户进程访问一个文件或目录foo,HDFS都要对其进行权限检查,
∙如果用户即foo的所有者,则检查所有者的访问权限;
∙如果foo关联的组在组名列表中出现,则检查组用户的访问权限;
∙否则检查foo其他用户的访问权限。
如果权限检查失败,则客户的操作会失败。
dfs.permissions=false
默认目录问题:
/user/hadoop(用户名)
默认数据路径是相对路径:
即在/user/hadoop(用户名)下
输出文件问题
输出文件不能过于多,否则会内存溢出.目前输出分自动和手动两个文件.
Map无响应
检查输入文件的格式,是否毛刺数据过多,过于异常.导致map无响应,内存溢出.
Reduce执行过慢
加大Reduce的任务个数,这个参数需要灵活调整.
Reduce端Join
通过DistributedCache加载到本地,形成map即可,适合只读的小数据集.
健壮性:
Map/reduce程序要考虑各种异常数据.都要有处理,防止垃圾数据导致程序异常宕机.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小说 推荐 分布式 计算 总结 史晓慕 第一阶段