学习笔记

来源:互联网 发布:mac搜索文件命令 编辑:程序博客网 时间:2024/06/03 20:29
示例四、输出数据压缩
输出数据量较大时,可以使用Hadoop提供的压缩机制对数据进行压缩,减少网络传输带宽和存储的消耗
可以指定对map的输出也就是中间结果进行压缩
可以指定对reduce的输出也就是最终输出进行压缩
可以指定是否压缩以及采用哪种压缩方式
对map输出进行压缩主要是为了减少shuffle过程中网络传输数据量
对reduce输出进行压缩主要是为了减少输出结果占用的HDFS的压缩


实例五、全局排序


HDFS:
-NameNode
管理着文件系统命名空间
– 维护着文件系统树及树中的所有文件和目录
• 存储元数据
– NameNode保存元信息的种类有:
• 文件名目录名及它们之间的层级关系
• 文件目录的所有者及其权限
• 每个文件块的名及文件有哪些块组成
• 元数据保存在内存中
– NameNode元信息并不包含每个块的位置信息
• 保存文件,block,datanode之间的映射关系


Hadoop更倾向存储大文件原因:
– 一般来说,一条元信息记录会占用200byte内存空间。假设块大
小为64MB,备份数量是3 ,那么一个1GB大小的文件将占用
16*3=48个文件块。如果现在有1000个1MB大小的文件,则会占
用1000*3=3000个文件块(多个文件不能放到一个块中)。我们
可以发现,如果文件越小,存储同等大小文件所需要的元信息就
越多,所以Hadoop更喜欢大文件。


元信息持久化
– 在NameNode中存放元信息的文件是fsimage。在系统运行期间
所有对元信息的操作都保存在内存中并被持久化到另一个文件
edits中。并且edits文件和fsimage文件会被
SecondaryNameNode周期性的合并
• 运行NameNode会占用大量内存和I/O资源,一般
NameNode不会存储用户数据或执行MapReduce任务。


全Hadoop系统只有一个NameNode
– 导致单点问题
– 两种解决方案:
• 将hadoop元数据写入到本地文件系统的同时再实时同步到一个远程
挂载的网络文件系统(NFS)。
• 运行一个secondary NameNode,它的作用是与NameNode进行交
互,定期通过编辑日志文件合并命名空间镜像,当NameNode发生故
障时它会通过自己合并的命名空间镜像副本来恢复。需要注意的是
secondaryNameNode保存的状态总是滞后于NameNode,所以这
种方式难免会导致丢失部分数据


Datanode
• 负责存储数据块,负责为系统客户端提供数据块的读写服务
• 根据NameNode的指示进行创建、删除和复制等操作
• 心跳机制,定期报告文件块列表信息
• DataNode之间进行通信,块的副本处理


数据块——磁盘读写的基本单位
– HDFS默认数据块大小64MB
– 磁盘块一般为512B
– 原因:块增大可以减少寻址时间,降低寻址时间/文件传输时间,若寻址
时间为10ms,磁盘传输速率为100MB/s,那么该比例仅为1%
– 数据块过大也不好,因为一个MapReduce通常以一个块作为输入,块过
大会导致整体任务数量过小,降低作业处理速度


SecondNameNode
•命名不好,容易误解,SecondNameNode并不是NameNode的备份
•用来保存HDFS的元数据信息,比如命名空间信息、块信息等,由于这些信息是在内存的,SecondNameNode是为了考虑持久化到磁盘


两个文件:
–fsimage -它是在NameNode启动时对整个文件系统的快照
–edit logs -它是在NameNode启动后,对文件系统的改动序列


SecondaryNameNode所做的不过是在文件系统中设置一个检查点来帮助NameNode更好的工作。它不是要取代掉NameNode也不是NameNode的备份。


•定时到NameNode去获取edit logs,并更新到fsimage[Secondary NameNode自己的fsimage]
•一旦它有了新的fsimage文件,它将其拷贝回NameNode中。
•NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间。


数据完整性校验
•不希望在存储和处理数据时丢失或损坏任何数据
•HDFS 会对写入的数据计算校验和,并在读取数据时验证校验和
•两种检验方法:
–校验和
•检测损坏数据的常用方法是在第一次进行系统时计算数据的校验和,在通道传输过程中,如果新生成的校验和不完全匹配原始的校验和,那么数据就会被认为是被损坏的。
–数据块检测程序DataBlockScanner
•在DataNode节点上开启一个后台线程,来定期验证存储在它上所有块,这个是防止物理介质出现损减情况而造成的数据损坏。


相似度计算:
得到了文本相似度计算的处理流程是:
–找出两篇文章的关键词;
–每篇文章各取出若干个关键词,合并成一个集合,计算每篇文章对于这个集合中的词的词频
–生成两篇文章各自的词频向量;
–计算两个向量的余弦相似度,值越大就表示越相似。


词频——TF
•假设:如果一个词很重要,应该会在文章中多次出现
•词频——TF(Term Frequency):一个词在文章中出现的次数
•也不是绝对的!出现次数最多的是"的""是""在",这类最常用的词,叫做停用词(stop words)
•停用词对结果毫无帮助,必须过滤掉的词
•过滤掉停用词后就一定能接近问题么?
•进一步调整假设:如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能反映了这篇文章的特性,正是我们所需要的关键词


反文档频率——IDF
•在词频的基础上,赋予每一个词的权重,进一步体现该词的重要性,
•最常见的词(”的”、”是”、”在”)给予最小的权重
•较常见的词(”国内”、”中国”、”报道”)给予较小的权重
•较少见的词(”养殖”、”维基”)
•将TF和IDF进行相乘,就得到了一个词的TF-IDF值,某个词对文章重要性越高,该值越大,于是排在前面的几个词,就是这篇文章的关键词。


相似文章
•使用TF-IDF算法,找出两篇文章的关键词;
•每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使用相对词频);
•生成两篇文章各自的词频向量;
•计算两个向量的余弦相似度,值越大就表示越相似。


自动摘要
•文章的信息都包含在句子中,有些句子包含的信息多,有些句子包含的信息少。"自动摘要"就是要找出那些包含信息最多的句子。
•句子的信息量用"关键词"来衡量。如果包含的关键词越多,就说明这个句子越重要。
•只要关键词之间的距离小于“门槛值”,它们就被认为处于同一个簇之中,如果两个关键词之间有5个以上的其他词,就可以把这两个关键词分在两个簇。
•下一步,对于每个簇,都计算它的重要性分值。
•例如:其中的簇一共有7个词,其中4个是关键词。因此,它的重要性分值等于( 4 x 4 ) / 7 = 2.3
原创粉丝点击