小象学院hadoop进阶hdfs-api及工具_第1页
小象学院hadoop进阶hdfs-api及工具_第2页
小象学院hadoop进阶hdfs-api及工具_第3页
小象学院hadoop进阶hdfs-api及工具_第4页
小象学院hadoop进阶hdfs-api及工具_第5页
已阅读5页,还剩13页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、HDFS API 及工具xianmOpenPasValue2014/3/22HDFS API FileSystem类提供基本的文件处理功能 适配器模式,根据配置文件中(hadoop2.x之后是fs.defaultFS)的值,实例化成不同的对象。本地文件系统:file:/HDFS: hdfs:/node.fqdn:8020/等等 Hadoop中的资源描述方法符合URL规范(RFC1738), 的值是默认的协议+server部分import.apache.hadoop.fs.FileSystem Configuration c

2、onf = new Configuration(); FileSystem fs = FileSystem.get(conf);HDFS API 文件操作读文件 fs.open(Path);新建文件fs.create(Path);对文件追加fs.append(Path);关闭文件句柄fs.close(Path);对于hdfs文件,如果不close的话会导致短期内不能继续写入文件。建目录fs.mkdirs(Path); 列目录 fs.listSus(Path); 通配符处理 fs.globSus(Path)处理a/b*.lzo形式的输入路径删除文件或目录 fs.delete(Path,判断是否为

3、文件fs.isFile(Path) 设置文件属性fs.setPermis(.)HDFS API 写文件Configuration conf = new Configuration();FileSystem fs = FileSystem.get(conf);Path file = neth(demo.txt);FSDataOutputStream outStream = fs.create(file);outStream.writeUTF( outStream.close(); 读文件e to HDFS Java API!);FSDataInputStream inStream = fs.op

4、en(file);String data = inStream.readUTF();System.out.prln(data);inStream.close();HDFS API 加载的配置文件 比如:重新设定连接的namenodeHDFS API 从本地上传文件fs. copyFromLocalFile(Path,Path) 从hdfs文件fs.copyToLocalFile(Path,Path) 获取文件块的位置fs. getFilockLocations() 设定备份数fs.setReplication(Path, short)HDFS c语言 API(libhdfs)#include

5、hdfs.hmain(argc, char *argv) hdfsFS fs =hdfsConnect( NAMENODE_HOSTNAME,PORT);char* fileName = demo_c.txt;char* message = size = strlen(message);e to HDFS C API!;exists = hdfsExists(fs, fileName);if (exists -1) fprf(stdout, File %s exists!n, fileName); else / Create and open file for writinghdfsFile

6、outFile = hdfsOpenFile(fs, fileName, O_WRONLY|O_CREAT,0,0,0) if (!outFile) exit(-2);/ write to filehdfsWrite(fs, outFile, (void*)message, size); hdfsCloseFile(fs, outFile);HDFS c语言 API(libhdfs) 两个关键文件hdfs.c/hdfs.h 基本原理Jni 执行方式LD_LIBRARY_PATH=$HADOOP_HOME/c+/ARCH/lib:$JAVA_HOME/jre/l ib/ARCH/server .

7、/hdfs_cpp_demo 回顾这些关键点的调用hdfsFS fs =hdfsConnect(NAMENODE_HOSTNAME,PORT);hdfsFile outFile = hdfsOpenFile(fs, fileName,flags, 0, 0, 0);hdfsWrite(fs, outFile, (void*)message, size);char* data = malloc(sizeof(char) * size);tSize readSize = hdfsRead(fs, inFile, (void*)data, size);HDFS挂载(fuse) 以fuse方式将hdf

8、s挂载到本地文件系统(cdh)hadoop-fuse-dfs dfs:/:8020/ Debug模式hadoop-fuse-dfs dfs:/:8020/ -d 开源版本fuse_dfs_wrapper.sh rw -oserver=localhost -oport= /u/hdfs/ 编译 1.xln -s $HADOOP_HOME/c+/Linux-amd64-64/lib/ build/libhdfs cp -R c+/ build/ant compile -Dlibhdfs=1 -Dfusedfs=1 2.2.0mvn compile -Pnative压缩HDFS的压缩是对应用可见的

9、Package.appress下 LzopCode, LzoCoddec, GzipCodec, BZip2Codec如何查看压缩文件内容 命令行# hadoo fs -text.lzo core-site.xml 中必须包含:pres.codecs,值为用逗号分隔的所有可能的Codec类,如:.appress.GzipCodec,.appress.DefaultCodecpres.codecs.appress.GzipCodec,pressiopres.lzo.LzopCodec,.ap presappyCodecLzopCodec c = new LzopCodec(); / 常犯的错误是

10、误用LzoCodec。c.setConf(conf); / 这一步是必须得OutputStream os = c.createOutputStream(fs.create(neth(“file.txt”);或InputStream is = c.createInputStream(fs.open(neth(“in.lzo”);HDFS benark 写文件(10个文件,每个20MB)hadoop jar $HADOOP_HOME/hadoop-test-*.jar TestDFSIO -write-nrFiles 10 -fileSize 20 读文件hadoop jar $HADOOP_HO

11、ME/hadoop-test-*.jar TestDFSIO -read-nrFiles 10 -fileSize 20HDFS Balance bin/start-balancer.sh -threshold 15 bin/stalancer.sh 各DataNode不均衡时使用不同机器之间同机器不同磁盘之间无法通过这种方法balance dfs.balance.bandwidthPerSecDataNode下线 hadoop dfsadmin -report获取集群hdfs状况 hadoop dfsadmin -refreshNodes删除节点时使用dfs.hosts.excludeexclude_fileExclude_file中加入要去除的节点执行refreshNodes使用多盘、控制HDFS磁盘使用 hdfs-site.xml 控制hdfs使用HDFS block 设置block过小:文件块总数过大,namenode中加载的fsimage占据大量内存过大:文件分布性存在问题,不利于并行命令行方式设定bin/hadoop fs -Ddfs.block.size=134217728 -put data.in /user/foo 坏块检查bin/hadoop fsck file -

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论