问题汇总
1、FileZilla连接问题,注意主机名是root而不是hadoop.Master,端口是22
2、多次执行namenode -format,会启动namenode失败。删掉
里面的内容,重新格式化。还有chown把hadoop目录用root属性。
chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性
3、注意主机名字命名要合法,不然很多奇怪问题。hadoop0和hadoop1改成hadoop.Matser和hadoop.Slave1之类。
4、执行自带wordcount时,INFO mapreduce.Job:
Running job: job_1523251787755_0001一直卡在这里,jps检查一下有没有datanode,重新start datanode。
5、执行MapReduce出错:INFO mapreduce.Job: Task Id : attempt_1523251787755_0001_m_000000_1,Status : FAILED
Error:org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)V
============================================================
Exception in thread "main" java.lang.UnsatisfiedLinkError:org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)V
atorg.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(NativeMethod)
以上问题,可能是jdk1.8和hadoop2.5.0不适配,将jdk换成1.7后,重装hadoop。即可。
6、完全分布式下遇到的问题:
执行MapReduce
wordcount报错:
18/05/03 10:54:26 INFO mapreduce.Job: Job
job_1525315311676_0001 failed with state FAILED due to: Application
application_1525315311676_0001 failed 2 times due to Error launching
appattempt_1525315311676_0001_000002. Got exception: java.net.ConnectException:
Call From hadoop.Master/192.168.175.129 to hadoop.Master:46047 failed on
connection exception: java.net.ConnectException: 拒绝连接;For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
解决
在我的slaves里把master主机删除,不能写在里面。
Namenode启动失败,重新把data/tmp的内容删除,再次namenode 格式化即可。
Datanode始终启动失败,有可能是主机名字映射错误,比如hostname显示hadoop.Slaver1,然而,hadoop设置的全是hadoop.Slave1。
配置HA同步namenode时,注意:
格式化active 的namenode nni,启动了该namenode,才在另一个standby的namenode nn2 进行hdfs-bootstarpStandby进行同步,没有启动nn1,而直接同步会报错。
因为standby namenode是通过active namenode的8020端口通讯的。若active namenode没有启动,则8020没有程序监听提供服务,standby尝试连接9次后会爆异常并且退出。
7、配置zookeeper:
启动zookeeper,子机也要启动,不然查询status时候会提示拒接连接。
8、配置HA架构也是,zookeeper子机也要启动,不然namenode 格式化时候会报错。
9、搭建hive和mysql遇到的问题:
登录mysql报错:Access[root@log01 ~]# mysql -u root –pEnter
password:
ERROR 1045 (28000): Access denied for user'root'@'localhost' (using password: NO) denied for user 'root'@'localhost'(using password: NO)
解决:
# /etc/init.d/mysqld stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root'and host='root' or host='localhost';
//把空的用户密码都修改成非空的密码就行了。
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysqld restart
# mysql -uroot -p
Enter password: <
输入新设的密码newpassword>
mysql命令打了没有内容输出:show databases;这条指令要一次性打完整,分号不能少。
初始化hive报错:Error: Duplicate key name'PCS_STATS_IDX' (state=42000,code=1061)
解决:
已经初始化成功后,再次初始化会报错。在mysql里的hive删除,重新create database hive。再次初始化即可。
启动hive报错:
[ERROR]
Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class
jline.Terminal, but interface was expected
解决:
因为hadoop的一个jar包版本太旧。jline-0.9.94.jar要用新的jline-2.12.jar
将/opt/modules/apache-hive-1.2.2-bin/lib/jline-2.12.jar
copy到/opt/modules/hadoopha/hadoop-2.5.0/share/hadoop/yarn/lib
Exception in thread "main"java.lang.RuntimeException: java.lang.IllegalArgumentException:java.net.URISyntaxException: Relative path in absolute URI:${system:java.io.tmpdir%7D/$%7Bhive.session.id%7D_resources
解决:
1查看hive-site.xml配置,会看到配置值含有"system:java.io.tmpdir"的配置项
2./opt/modules/apache-hive-1.2.2-bin/tmp,tmp是新建的。
3.将含有"system:java.io.tmpdir"的配置项的值修改为如上地址启动hive,成功!