本文目录
- hadoop是分布式文件系统吗
- Hadoop是一种语言还是一种操作系统平台还是一个什么东西-ITJOB老师讲的我没有理解透
- 怎样理解排序是hadoop的灵魂
- MapReduce和Hadoop的理解
- 哪位专业人士能解释一下hadoop,har归档
hadoop是分布式文件系统吗
是的Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。它能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。要理解HDFS的内部工作原理,首先要理解什么是分布式文件系统。1.分布式文件系统 多台计算机联网协同工作(有时也称为一个集群)就像单台系统一样解决某种问题,这样的系统我们称之为分布式系统。 分布式文件系统是分布式系统的一个子集,它们解决的问题就是数据存储。换句话说,它们是横跨在多台计算机上的存储系统。存储在分布式文件系统上的数据自动分布在不同的节点上。 分布式文件系统在大数据时代有着广泛的应用前景,它们为存储和处理来自网络和其它地方的超大规模数据提供所需的扩展能力。2.分离元数据和数据:NameNode和DataNode 存储到文件系统中的每个文件都有相关联的元数据。元数据包括了文件名、i节点(inode)数、数据块位置等,而数据则是文件的实际内容。 在传统的文件系统里,因为文件系统不会跨越多台机器,元数据和数据存储在同一台机器上。 为了构建一个分布式文件系统,让客户端在这种系统中使用简单,并且不需要知道其他客户端的活动,那么元数据需要在客户端以外维护。HDFS的设计理念是拿出一台或多台机器来保存元数据,并让剩下的机器来保存文件的内容。 NameNode和DataNode是HDFS的两个主要组件。其中,元数据存储在NameNode上,而数据存储在DataNode的集群上。NameNode不仅要管理存储在HDFS上内容的元数据,而且要记录一些事情,比如哪些节点是集群的一部分,某个文件有几份副本等。它还要决定当集群的节点宕机或者数据副本丢失的时候系统需要做什么。 存储在HDFS上的每份数据片有多份副本(replica)保存在不同的服务器上。在本质上,NameNode是HDFS的Master(主服务器),DataNode是Slave(从服务器)。
Hadoop是一种语言还是一种操作系统平台还是一个什么东西-ITJOB老师讲的我没有理解透
。Hadoop开始只与网页索引有关,迅速发展成为分析大数据的领先平台。Hadoop是一个由分布式系统基础架构。是受欢迎的在 Internet 上对搜索关键字进行内容分类的工具,但它也可以解决许多要求极大伸缩性的问题。
怎样理解排序是hadoop的灵魂
其实不管在map端还是reduce端,MapReduce都是反复地执行排序,合并操作,所以排序是hadoop的灵魂。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
MapReduce和Hadoop的理解
mapreduce就是一个算法框架,无论你的问题是什么,可以通过将你的数据map映射到不同的节点,由各个节点分别reduce约化数据,最后和在一起作为下一个mapreduce的数据或最终结果。hadoop是开源的运行mapreduce的平台,可以自动分布在多个计算机节点,并且将你放上去的数据通过你写的函数作出结果
哪位专业人士能解释一下hadoop,har归档
应用场景
我们的hdfs中保存大量小文件(当然不产生小文件是最佳实践),这样会把namenode的namespace搞的很大。namespace保存着hdfs文件的inode信息,文件越多需要的namenode内存越大,但内存毕竟是有限的(这个是目前hadoop的硬伤)。
下面图片展示了,har文档的结构。har文件是通过mapreduce生成的,job结束后源文件不会删除。
har命令说明
参数“-p”为src path的前缀
src可以写多个path
单个src文件夹:
多个src文件夹
不指定src path,直接归档parent path(本例为“/fc/src/20120116/ ”, “/user/heipark ”仍然为输出path),这招是从源码里翻出来的,嘿嘿。
使用模式匹配的src path,下面的示例归档10、11、12月文件夹的数据。这招也是从源码发出来的。
hadoop fs -ls har:////user/heipark/20120108_15.har/
#输出如下:
drw-r--r-- - hdfs hadoop 0 2012-01-17 16:30 /user/heipark/20120108_15.har/2025
drw-r--r-- - hdfs hadoop 0 2012-01-17 16:30 /user/heipark/20120108_15.har/2029
#使用hdfs文件系统查看har文件
hadoop fs -ls /user/yue.zhang/20120108_15.har/
#输出如下:
-rw-r--r-- 2 hdfs hadoop 0 2012-01-17 16:30 /user/heipark/20120108_15.har/_SUCCESS
-rw-r--r-- 5 hdfs hadoop 2411 2012-01-17 16:30 /user/heipark/20120108_15.har/_index
-rw-r--r-- 5 hdfs hadoop 24 2012-01-17 16:30 /user/heipark/20120108_15.har/_masterindex
-rw-r--r-- 2 hdfs hadoop 191963 2012-01-17 16:30 /user/heipark/20120108_15.har/part-0
public static void main(String args) throws Exception {
Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://xxx.xxx.xxx.xxx:9000");
HarFileSystem fs = new HarFileSystem();
fs.initialize(new URI("har:///user/heipark/20120108_15.har"), conf);
FileStatus listStatus = fs.listStatus(new Path("sub_dir"));
for (FileStatus fileStatus : listStatus) {
System.out.println(fileStatus.getPath().toString());
}
}
archive -archiveName NAME -p 《parent path》 《src》* 《dest》
生成HAR文件
hadoop archive -archiveName 419.har -p /fc/src/20120116/ 419 /user/heipark
hadoop archive -archiveName combine.har -p /fc/src/20120116/ 419 512 334 /user/heipark
hadoop archive -archiveName combine.har -p /fc/src/20120116/ /user/heipark
hadoop archive -archiveName combine.har -p /fc/src/2011 1 /user/heipark
查看HAR文件
view plain copy
Har Java API (HarFileSystem )
Java代码
view plain copy