先在 windows 7 下搭建好 eclipse 项目环境, 参考 Eclipse 配置 Java 开发环境
导入依赖包
创建一个 Java 工程后, 在工程下新建个 lib 文件夹, 导入 hdfs 的相关 jar 包:
- /usr/smallcpp/hadoop-2.7.1/share/hadoop/common
- /usr/smallcpp/hadoop-2.7.1/share/hadoop/common/lib
- /usr/smallcpp/hadoop-2.7.1/share/hadoop/hdfs
- /usr/smallcpp/hadoop-2.7.1/share/hadoop/hdfs/lib
测试 hdfs 导入这些目录下的 jar 就可以了…
选中导入后所有的 jar 包, 右键 [构建路径] -> [添加到构建路径]
关联源码
先去 Hadoop 下载源码包:
然后在 Eclipase 上按 ctrl
追踪源码时, 就可以设置关联刚下载的 Hadoop 源码了.
关于权限
当我们远程上传文件时, 可能会报权限不足的错误, 此时有两种处理办法:
第一种, 是使用 FileSystem
的另一个重载, 传递第三个参数来伪装成集群的 super-user
, 如:
FileSystem fs = FileSystem.get(URI.create(uri), new Configuration(), "root");
第二种, 是去 linux 里修改下 hdfs 的配置, 进入 sbin 目录, vim hdfs-site.xml
<property> <name>dfs.permissions</name> <value>false</value> </property>
不管哪一种, 都不怎么靠谱, 确实在 Hadoop 1.x 时, 没有怎么考虑安全的问题, 因为 Hadoop 的应用场景是离线数据分析, 一般不对外网开放;
不过在 Hadoop 2.x 中扩展了个 kerberos 项目用来控制 Hadoop 的权限, 如有必要可以再去研究.
另外好像还有个 Apache ranger 项目, 也是一个 Hadoop 集群权限框架, 提供操作、监控、管理复杂的数据权限.