您的位置:首页 > 大数据 > Hadoop

2、HDFS客户端的注意事项

2016-11-30 00:00 141 查看
1:客户端使用open()、copyFromLocalFile()、mkdirs()等对服务器的文件改动的,都需要涉及到权限问题,需要将自己伪装成为“root”,伪装方式为:

1.)conf.set("HADOOP-USER-NAME", "root");
2.)System.setProperty("HADOOP-USER-NAME", "root");
3.)fs = FileSystem.get(new URI("hdfs://hadoop1:9000"), conf, "root");


2:当下载文件到windows系统的时候,hadoop客户端默认会调用window的本地native方法以加速写入文件,这就需要window中HADOOP_HOME安装目录的bin目录下,有winutil.exe的程序,否则会报错,如何才能够有这个工具程序?

解决方案:
1.)自己编译hadoop工程,这样bin目录下就有winutil.exe的程序了。
2.)或者不用本地方法,用jvm内部的file类方法这样速度会慢一些
参数4:是否使用原生的java操作本地文件系统;如果为false,则使用winutils;如果为true,
则用java操作fs.copyToLocalFile(false, new Path("/111.txt"), new Path("c:/233.txt"), true);


3:configuration对象加载配置文件的顺序

// 构造一个配置参数对象,设置一个参数:我们要访问的hdfs的URI
// 从而FileSystem.get()方法就知道应该是去构造一个访问hdfs文件系统的客户端,以及hdfs的访问地址
// new Configuration();的时候,它就会去加载jar包中的hdfs-default.xml
// 然后再加载classpath下的hdfs-site.xml
//最后是代码中conf.set();


4:HDFS是一套软件,通过他的client的api我们可以不需要深入他的细节实现,就能够很方便的往里面存储数据和读取数据。

比如:mapreduce、stom、spark等后续的框架,都是直接通过HDFS的api来直接操作的,不需要深入它的细节中。这个一定要搞明白。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息