[root@hadoop2 ~]# hadoop namenode -formatjava
DEPRECATED: Use of this script to execute hdfs command is deprecated.node
Instead use the hdfs command for it.shell
Error: Could not find or load main class "-Djava.library.path=.usr.local.hadoop.lib"apache
解決辦法:oop
把hadoop環境變量的hadoop_opts引號兩端的\\去掉this
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"spa
、Run on Hadoop編譯程序時,出現以下錯誤:
WARN mapred.JobClient: No job jar file set. User classes may not be found. See JobConf(Class) or JobConf#setJar(String)
緣由是由於job.setJarByClass使用了xxx.class的類加載器來尋找包含該類的Jar包,而後設置該Jar包爲做業所用的Jar包。可是咱們的做業Jar包是在程序運行時纔打包的,而xxx.class的類加載器是AppClassLoader,運行後咱們沒法改變它的搜索路徑,因此使用setJarByClass是沒法設置做業Jar包的。
將本工程導出的jar包放到工程根目錄下面,並在提交程序前添加下面的設置:
conf.set("mapred.jar", "xxx.jar"); //其中,xxx.jar是你導出的jar文件名,注意第一個參數不要拼寫錯了。
六、Run on Hadoop編譯程序時,出現以下錯誤:
org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security .AccessControlException: Permission denied: user=xxx, access=WRITE, inode="hadoop": hadoop:supergroup:rwxr-xr-x
由於Eclipse使用Hadoop插件提交做業時,會默認以xxx身份去將做業寫入hdfs文件系統中,對應的也就是HDFS上的/user/xxx,個人爲/user/root,因爲xxx用戶對hadoop目錄並無寫入權限,因此致使異常的發生。解決方法爲:放開 hadoop目錄的權限 , 方法有二:
(1)執行以下命令
$ hadoop fs -chmod 777 /user/root
(2)修改Hadoop配置
修改hadoop的配置文件:conf/hdfs-core.xml,找到dfs.permissions的配置項,將value值改成false,具體以下:
dfs.permissions
false
If "true", enable permission checking in HDFS.
If "false", permission checking is turned off, but all other behavior is unchanged.
Switching from one parameter value to the other does not change the mode, owner or group of files or directories.
修改完後重啓下hadoop的進程使之生效便可。
------------------------------------------------end------------------------------------------------
七、MapReduce操做HBase出現以下錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/zookeeper/KeeperException
這是由於Hadoop在調用HBase包時找不到相應jar包,解決辦法是將HBase目錄下的hbase-0.90.4.jar和lib目錄下的zookeeper-3.3.2.jar包拷貝到hadoop/lib下便可,其它這類問題相似。
八、MapReduce操做HBase出現以下錯誤:
org.apache.hadoop.hbase.TableNotFoundException: Cannot find row in .META. for table
這是由於HBase中不存在要插入數據的表,在hbase shell中手工建立表格create 'xxx', 'xxx'便可。
九、MapReduce跑job時若是出現以下錯誤:
java.lang.RuntimeException: java.lang.ClassNotFoundException:
這是由於Hadoop在找class時沒有從jar包中找而出錯,解決辦法是刪除除開jar和.java文件外的全部目錄和文件便可。插件