知识点
相关文章
更多最近更新
更多Hadoop权威指南学习(二)——HDFS & Hadoop IO
2019-03-28 14:20|来源: 网络
HDFS设计:
以流式数据访问模式来存储超大文件,“一次写入,多次读取”;
HDFS为高数据吞吐量应用优化的,低延迟的方位需求应选择HBase;
文件系统的元数据存储在namenode的内存中,所能存储的文件总数受限于内存容量;
HDFS的块(block)默认为64M(块大的目的为了最小化寻址开销,从磁盘传输时间可明显大于定位时间),以块存储而非文件可简化存储系统的设计
HDFS只是Hadoop文件系统的一个实现,在org.apache.hadoop包的fs以及hdfs子包中包含了多种其他文件系统
使用Java API操作Hadoop文件(见 http://www.linuxidc.com/Linux/2011-11/47051.htm)包括文件与目录的操作,创建、删除、读取、写入等。
相关阅读:
Hadoop权威指南学习(七)——其他 http://www.linuxidc.com/Linux/2011-11/47050.htm
Hadoop权威指南学习(六)——MapReduce的特性 http://www.linuxidc.com/Linux/2011-11/47049.htm
Hadoop权威指南学习(五)——MapReduce的类型和格式 http://www.linuxidc.com/Linux/2011-11/47048.htm
Hadoop权威指南学习(四)——MapReduce工作机制 http://www.linuxidc.com/Linux/2011-11/47047.htm
Hadoop权威指南学习(三)——MapReduce应用开发 http://www.linuxidc.com/Linux/2011-11/47046.htm
Hadoop权威指南学习(二)——HDFS & Hadoop IO http://www.linuxidc.com/Linux/2011-11/47045.htm
Hadoop权威指南学习(一)——关于Mapreduce http://www.linuxidc.com/Linux/2011-11/47044.htm
数据流:
1. 文件读取剖析
2. 文件写入剖析
Hadoop IO:
1. 数据完整性:对写入的所有数据计算校验和并在读取数据是验证校验和。(LocalFileSystem,RawLocalFileSystem,ChecksumFileSystem)
2.压缩:减少存储文件磁盘空间+加速数据在网络和磁盘上的传输。
Hadoop中CompressionCodec接口的实现代表一个codec(压缩-解压缩算法),如DEFKATE,Gzip,bzip2(支持切分)以及LZO,需要在时间和空间取平衡。而压缩算法是否支持切分对于mapreduce处理非常重要,如1GB的压缩文件,分16个数据块存放,若压缩算法不支持切分,则map任务独立于其他任务进行数据读取是行不通的。[CompressionCodecFactory,,CodecPool]
- conf.setBoolean("mapred.output.compress", true);
- conf.setCalss("mapred.output.compress.codec",GzipCodec.class, CompressionCodec.class);
- // mapred.output.compress.type=BLOCK(默认为RECORD)
3. 序列化:将结构化对象转化为字节流,以便在网络上传输或写道磁盘永久存储。
Hadoop中,系统结点上进行间的通信通过RPC实现的,其将消息序列化成二进制流后发送给远程结点,远程节点将二进制流反序列化成员是消息。Writable接口定义了write(DataOutput)和readFields(DataInput)两个方法;WritableComparable接口继承至Writable和Comparable接口,MapReduce中的key均需要实现该接口;
Writable类:org.apache.hadoop.io中,包括Java基本类型的Writable封装器(如Text,NullWritable,ObjectWritable)以及集合类(ArrayWritable,TwoDArrayWritable,MapWritable,SortedMapWritable)
Apache Avro是独立于变成语言的数据序列化系统,旨在解决Writable类型的不足:缺乏语言的可以执行。
4. 基于文件的数据结构:SequenceFile + MapFile(排好序的SequenceFile,已加入用于搜索间的索引)
相关问答
更多-
想学hadoop,hadoop权威指南 和 大数据时代 两本书哪个更好?[2022-01-23]
权威指南听说将太多理论,新手容易无法理解,而实战注重的是应用,可能不会涉及太多理论,对于新手来说可以有个直观的认识。所以推荐实战。至于其他两本没有听过,所以不知道 -
hadoop hdfs的问题[2021-10-30]
最下面那张图里环境变量设置的那一行多了一个$符号 export JAVA_HOME=/usr/java/jdk1.6.0_35 -
您可以通过在hdfs-site.xml中将以下属性设置为false来禁用hdfs权限
dfs.permissions.enabled false -
做了一个全新安装的hadoop并用同一个罐子运行工作,问题就消失了。 似乎是一个错误,而不是编程错误。 Did a fresh installation of hadoop and ran the job with the same jar, the problem disappeared. Seems to be a bug rather than programming errors.
-
关于hadoop:您需要确保core-site.xml namenode条目在hadoop配置中服务于0.0.0.0而不是127.0.0.1(localhost)。 重要的是,由于某种原因,clouderas vm发行版默认为localhost。 Regarding hadoop : You need to make sure the core-site.xml namenode entry is serving to 0.0.0.0 instead of 127.0.0.1 (localhost) in ...
-
TaggedWritable类没有空构造函数,因此在应该读取序列化数据的reduce阶段,app会因为无法通过反射创建TaggedWritable键入键而TaggedWritable 。 您应该添加一个空构造函数。 您的地图阶段已成功完成,因为在地图阶段,您的映射器会TaggedWritable创建TaggedWritable类型的键。 This code solves the problem and gives the expected result. It is from here, public st ...
-
使用HDFS配置参数添加XML文件: Configuration conf = new Configuration(); conf.addResource(new Path("your_hadoop_path/conf/core-site.xml")); conf.addResource(new Path("your_hadoop_path/conf/hdfs-site.xml")); FileSystem fs = FileSystem.get(URI.create(uri),conf); Add th ...
-
假设zipIn是java.util.zip.ZipInputStream ,你不应该迭代地调用getNextEntry而不是读取字节吗? I resolved this issue after doing some changes in my code. In the first part of code, I was trying to unzip all the zip files whereas I should have access the spilts. Hadoop basic, which ...
-
首先, Reducer
使用Hadoop进行索引(Indexing with Hadoop)[2023-06-05]
我按原样使用了您的代码,并在进行了3次修改后进行了编译: 在以下语句中,将filename更改为fileName ( fileName 'N'大写) 更改: word.set(itr.nextToken().toLowerCase().replaceAll("[^a-z]+","") +" "+ filename); 至: word.set(itr.nextToken().toLowerCase().replaceAll("[^a-z]+","") +" "+ fileName); 导入的包Gene ...