hadoop报错解决方案---安装系列三
操作过程中主要出现以下几个错误:
Unsupported major.minor version 51.0
处理办法:
eclipse下的项目的jdk环境和liux下的jdk环境不一致,将windows下的eclipse中的jdk环境与linux的环境更改一致
切换linux的jdk版本为1.7:
上传jdk7压缩包并解压
配置jdk变量 vi /etc/profile
在终端里面输入:
alternatives --install /usr/bin/java java /usr/local/jvm/jdk1.7.0_79/bin/java 300
alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_101/bin/java 300
jdk1.8.0_101为之前安装的jdk 如想切换至1.8 还需更改环境变量/etc/profile
红色部分自行修改目录(安装JDK的目录)
接着执行alternatives --config java
输入想要切换的jdk序号
Java -version
在myeclipse里添加1.7的jdk,创建java项目时选择jdk版本为1.7
重启hadoop集群报错:
java.net.BindException: Port in use: 0.0.0.0:50070
Caused by: java.net.BindException: Address already in use
处理办法:
1)sudo lsof -i:端口 -P
2)sudo kill -9 PID
以50070端口为例:
sudo lsof -i:50070 -P
控制台输出内容:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 6501 root 189u IPv4 0x782e003217773193 0t0 TCP *:50070 (LISTEN)
然后kill掉:
sudo kill -9 6501
hadoop主节点缺少NameNode
log信息:
java.io.FileNotFoundException:/home/hadoop/app/dfs/name/in_use.lock (Permission denied)
处理办法:
有两种场景出现
1):在原来正常的时候,有一次突然使用了原来不同的用户启动了一次hadoop。这种场景会产生一个in_use.lock 文件夹在你设置的目录中,这时候可以删除这个文件夹直接,然后重新启动
2):在格式化hadoop的时候和当期启动的用户不是同一个,也会导致该问题。这个时候可以使用格式化hadoop的那个用户重新启动hadoop。也可以解决此错误。
hadoop主节点缺少SecondaryNameNode
log信息:
Cannot lock storage /home/hadoop/app/tmp/dfs/namesecondary. The directory is already locked
处理办法:删除该目录
java项目运行不报错
处理办法:
新建一个文件,命名为“log4j.properties”,放到src目录下。向里填入一下信息:
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
保存后重新运行
通过java接口向hbase插入一张表时报错:
[org.apache.hadoop.util.NativeCodeLoader] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2017-03-15 14:09:11,318 ERROR [org.apache.hadoop.util.Shell] - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
处理办法:
到github下载https://github.com/srccodes/hadoop-common-2.2.0-bin,同样也可以适用于hadoop2.6.X
配置windows系统环境变量HADOOP_HOME和PATH,其中HADOOP_HOME的变量值为hadoop-common-2.2.0-bin-master的存放目录
重启eclipse
启动zookeeper时报错:
Unexpected exception, exiting abnormally java.net.BindException: Address already in use
处理办法:
用 sudo lsof -i:2181,发现了2181端口被占用了,kill掉进程
(之前用root用户启动过zookeeper,端口被占用)
.8.向account表中插入数据时报错:
No server address listed in hbase:meta for region account,,1489571988348.199cbfbbfa0c172de72760708c5ed5aa. containing row fy1
scan ‘account’表,同样报相同的错误:
处理办法:
查看16010界面,发现account表
在java代码里将表名更改为online regions的表 并更改其列族名