windows下eclipse运行hdfs API常见问题
2018-01-25 09:14
295 查看
在windows下写hdfs的java API常见问题:
准备:例如访问hdfs需要对应的jar包,可以在hadoop解压包里找(common+hdfs核心包+hdfs依赖的lib包),也可以通过maven。
1、报空指针异常
这是因为运行环境问题,
解决办法:
系统环境变量指定HADOOP_HOME:F:\BaiduNetdiskDownload\day06 hadoop\day06\软件\hadoop-2.6.4 还有在PATH中加入hadoop_home的bin
但是hadoop-2.6.4是linux版本编译过来的,所以会调用linux的本地库native而在windows上运行要调用windows的本地库(可以去网上下载windows版本编译的hadoop包),所以要把无jar版windows平台hadoop-2.6.1.zip解压后的hadoop-2.6.1中的bin和lib替换到2.6.4中
或者直接指定HADOOOP_HOME为hadoop-2.6.1
2、Permission deny权限不足
客户端去操作hdfs时,是有一个用户身份的
默认情况下,hdfs客户端api会从jvm中获取一个参数来作为自己的用户身份:-DHADOOP_USER_NAME=hadoop
在windows上运行代码,访问hdfs时jvm会查找系统环境变量HADOOP_USER_NAME,如果系统环境变量没有配置的话就就会以windows的默认用户名zzd去登录到hdfs,但是权限不够 rw-r-r
解决办法:
(1)可以chmod 777 hdfs上的文件权限,但是不安全
(2)以System.setProperty("HADOOP_USER_NAME", "hadoop")指定运行时以什么身份登录到hdfs
(3)也可以配置电脑的系统环境变量:增加一个HADOOP_USER_NAME为hadoop,也可以直接改windows系统用户名为hadoop
(4)run configurations 指定jvm运行参数:-DHADOOP_USER_NAME=hadoop
(5)在构造客户端fs对象时,通过参数传递进去FileSystem.get(new URI("hdfs://master:9000"), conf,"hadoop");
推荐第5种
总结:
建议在linux下进行hadoop应用的开发,不会存在兼容性问题。如在window上做客户端应用开发,需要设置以下环境(解决空指针及其他环境问题):
A、在windows的某个目录下解压一个hadoop的安装包
B、将安装包下的lib和bin目录用对应windows版本平台编译的本地库替换
C、在window系统中配置HADOOP_HOME指向你解压的安装包
D、在windows系统的path变量中加入hadoop的bin目录
准备:例如访问hdfs需要对应的jar包,可以在hadoop解压包里找(common+hdfs核心包+hdfs依赖的lib包),也可以通过maven。
1、报空指针异常
这是因为运行环境问题,
解决办法:
系统环境变量指定HADOOP_HOME:F:\BaiduNetdiskDownload\day06 hadoop\day06\软件\hadoop-2.6.4 还有在PATH中加入hadoop_home的bin
但是hadoop-2.6.4是linux版本编译过来的,所以会调用linux的本地库native而在windows上运行要调用windows的本地库(可以去网上下载windows版本编译的hadoop包),所以要把无jar版windows平台hadoop-2.6.1.zip解压后的hadoop-2.6.1中的bin和lib替换到2.6.4中
或者直接指定HADOOOP_HOME为hadoop-2.6.1
2、Permission deny权限不足
客户端去操作hdfs时,是有一个用户身份的
默认情况下,hdfs客户端api会从jvm中获取一个参数来作为自己的用户身份:-DHADOOP_USER_NAME=hadoop
在windows上运行代码,访问hdfs时jvm会查找系统环境变量HADOOP_USER_NAME,如果系统环境变量没有配置的话就就会以windows的默认用户名zzd去登录到hdfs,但是权限不够 rw-r-r
解决办法:
(1)可以chmod 777 hdfs上的文件权限,但是不安全
(2)以System.setProperty("HADOOP_USER_NAME", "hadoop")指定运行时以什么身份登录到hdfs
(3)也可以配置电脑的系统环境变量:增加一个HADOOP_USER_NAME为hadoop,也可以直接改windows系统用户名为hadoop
(4)run configurations 指定jvm运行参数:-DHADOOP_USER_NAME=hadoop
(5)在构造客户端fs对象时,通过参数传递进去FileSystem.get(new URI("hdfs://master:9000"), conf,"hadoop");
推荐第5种
总结:
建议在linux下进行hadoop应用的开发,不会存在兼容性问题。如在window上做客户端应用开发,需要设置以下环境(解决空指针及其他环境问题):
A、在windows的某个目录下解压一个hadoop的安装包
B、将安装包下的lib和bin目录用对应windows版本平台编译的本地库替换
C、在window系统中配置HADOOP_HOME指向你解压的安装包
D、在windows系统的path变量中加入hadoop的bin目录
相关文章推荐
- Windows|Eclipse 运行HDFS程序遇到问题之 AccessControlException【windows中运行hdfs程序后报的异常:访问权限控制异常;方案二,修改MR程序即可】
- Windows|Eclipse 运行HDFS程序遇到问题之 AccessControlException
- Hadoop基础教程-第4章 HDFS的Java API(4.4 Windows+Eclipse+HDFS快速入门)
- windows下运行hadoop的Eclipse插件,的常见错误和解答
- nutch2.x在eclipse+windows环境下运行遇到的一些问题的解决方案
- windows环境下通过Eclipse下载hdfs中的文件中遇到的问题
- 解决在windows的eclipse上面运行WordCount程序出现的一系列问题详解
- eclipse for java ee的tomcat配置(常见问题解决)(linux或windows兼可)
- OSGi——运行工具箱的配置(org.eclipse.equinox.http org.eclipse.equinox.servlet.api)问题
- win7环境Eclipse中运行JAVA项目读取HDFS(hadoop-2.7.2)中的文件实例与问题汇总
- nutch2.x在eclipse+windows环境下运行遇到的一些问题的解决方案
- 在windows上用eclipse远程运行hadoop上的wordcount程序出现的问题,求解决
- eclipse设置运行在yarn上后失败,不设置就可以运行【以及javaAPI单点访问hdfs和运行YARN、zk访问】
- windows eclipse下hadoop开发,常见问题
- 在Windows平台上安装与运行PostgreSQL的常见问题与解答
- Windows下Eclipse运行C++问题Launch failed,Binary not found
- windows eclipse下hadoop开发,常见问题
- cygwin移植linux程序到windows及在eclipse中使用cygwin的常见问题
- 直接在eclipse上运行hdfs上文件会出现的问题及解决方法
- Windows下Eclipse工程移到Linux下乱码问题解决