这个学期,我们开始接触大数据,并且开始学习hadoop和hbase。说实话,对于我这个学习能力不是很强的人来说真的是一个挑战,而且虚拟机上的linux系统也是不停的出问题,现在把这些问题总结一下,留个记录。
首先说明一下,我的是在VMware上安装的Contest6.0,版本不同,操作的方法可能不同。
1、虚拟机连接不上主机路由
问题如下:
java.net.NoRouteToHostException: 没有到主机的路由; For more details see: http://wiki.apache.org/hadoop/NoRouteToHost
这个问题弄得我很尴尬,这是说明我在启动的时候主机与虚拟机ping值不通,win+Rj进入dosc界面,在虚拟机启动的条件下输入 ping (你的ip) ,果然,我ping后丢包率为100%,在网上寻求解决方法,发现大多数都说是因为防火墙的问题,然后我去检查防火墙。
service iptables stutas //检查防火墙状态 service iptables stop //关闭防火墙
显然,并不是防火墙的问题,后来,经过向大佬寻求帮助后,发现了这样一个问题,在我运行jps时,关于我端口的所有变量都没有启动成功,那是不是我IP的问题。随后,终于找到问题所在。
解决方法:
①关闭虚拟机
②打开VMware,点击 编辑 --> 虚拟网络编译器 --> 点击更改设置 -->点击还原默认设置 --> 最后将子网IP改成你自己的就可以了
③重启虚拟机,输入命令正常启动
搞定!
2、关于进入hbase shell命令后出现的问题
这个问题出现过好多次。刚开始的时候,当我运行到hbaseshell命令时,就会出现下面这种错误:
ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
这句话的意思是说,在运行的时候,你的hmaster并没有启动,然后,例如你在shell命令中使用list命令,就会如下图所示:
一般来说,这种问题的出现一般是出现在集群中,由于zookeeper配置时端口和主机映射不一致而造成的,因此,需要在每个主机上都配置集群的主机映射。
但是我遇到的这个问题就有点奇葩了,因为我并不是在集群下进行的开发,那就一定不是这种情况了,所以,那就是另外一种情况:因为多台节点的时间不同步,导致节点之间的连接时间超时,这时只需要通过 ntpdate 0.cn.pool.ntp.org 命令使各个节点的时间跟网络时间同步即可。
同步后,重启hbase,重新运行会出现下面的情况:
ERROR: Can't get master address from ZooKeeper; znode data == null
这个问题的出现是因为你的节点长期或多次挂起引起的,你可以多次启动hbase就可以了。
搞定!
3、遇到线程启动不够的情况
在hadoop使用过程中,我们经常会遇到线程启动不一致的情况,对于我的来说,开启hadoop、zookeeper和hbase之后,正常那个情况下是有九个线程启动的,如果启动之后,发现有线程缺少,那一般在启动过程中会出现如下情况,例如下图:
这说明,在启动hadoop时,datanode没有启动,你需要先将他关闭,那么你就需要先将hadoop stop掉,然后重新启动就可以了,任何线程缺少的时候都可以使用这种方法。
虽然这是一个小问题,但是有时不注意,你会发现自己的程序无法运行,造成很大的困然,所以,要养成每次启动或者使用时,都要先jps查看线程是否都已经启动的好习惯。
4、配置MapReduce时,出现 An internal error occurred during: “Map/Reduce location status updater”. java.lang.NullPointerException;
出现这个问题只要就是在配置过程中没有正确的输入Map/Reduce Master和DFS Master中的Part,这两个值分别位于:usr/local/hadoop/etc/hadoop/hdfs-site.xml和相同目录下的core-site.xml中。并且在系统变量中新建 HADOOP_USER_NAME,内容为你的MapReduce的Location Name。
如果启动之后,发现没有出现DFS Location,那么右击项目栏空白处,点击刷新就有了。
5、MapReduce使用过程中,运行程序出现 org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
在使用MapReduce时,我们是用文件上传后会出现这个错误,因此,我们需要下载hadoop.dll,winutils.exe解压到你hadoop下的bin目录中,同时添加到C盘Windows目录下System32中,运行会不报错。
6、CentOS6安装MySql出现错误(用yum安装mysql-server的时候报错)
错误情况如下:
[root@localhost hadoop]# sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm Preparing... ########################################### [100%] package mysql-community-release-el7-5.noarch is already installed [root@localhost hadoop]# yum install mysql-community-server 已加载插件:fastestmirror, refresh-packagekit, security 设置安装进程 Loading mirror speeds from cached hostfile 解决依赖关系 --> 执行事务检查 ---> Package mysql-community-server.x86_64 0:5.6.46-2.el7 will be obsoleting --> 处理依赖关系 mysql-community-common(x86-64) = 5.6.46-2.el7,它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 --> 处理依赖关系 mysql-community-client(x86-64) >= 5.6.10,它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 --> 处理依赖关系 systemd,它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 --> 处理依赖关系 systemd,它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 --> 处理依赖关系 libstdc++.so.6(GLIBCXX_3.4.15)(64bit),它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 --> 处理依赖关系 libc.so.6(GLIBC_2.17)(64bit),它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 ---> Package mysql-server.x86_64 0:5.1.73-8.el6_8 will be 取代 --> 执行事务检查 ---> Package mysql.x86_64 0:5.1.73-8.el6_8 will be 取代 ---> Package mysql-community-client.x86_64 0:5.6.46-2.el7 will be obsoleting --> 处理依赖关系 mysql-community-libs(x86-64) >= 5.6.10,它被软件包 mysql-community-client-5.6.46-2.el7.x86_64 需要 --> 处理依赖关系 libc.so.6(GLIBC_2.17)(64bit),它被软件包 mysql-community-client-5.6.46-2.el7.x86_64 需要 ---> Package mysql-community-common.x86_64 0:5.6.46-2.el7 will be 安装 ---> Package mysql-community-server.x86_64 0:5.6.46-2.el7 will be obsoleting --> 处理依赖关系 systemd,它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 --> 处理依赖关系 systemd,它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 --> 处理依赖关系 libstdc++.so.6(GLIBCXX_3.4.15)(64bit),它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 --> 处理依赖关系 libc.so.6(GLIBC_2.17)(64bit),它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 --> 执行事务检查 ---> Package mysql-community-client.x86_64 0:5.6.46-2.el7 will be obsoleting --> 处理依赖关系 libc.so.6(GLIBC_2.17)(64bit),它被软件包 mysql-community-client-5.6.46-2.el7.x86_64 需要 ---> Package mysql-community-libs.x86_64 0:5.6.46-2.el7 will be obsoleting --> 处理依赖关系 libc.so.6(GLIBC_2.17)(64bit),它被软件包 mysql-community-libs-5.6.46-2.el7.x86_64 需要 ---> Package mysql-community-server.x86_64 0:5.6.46-2.el7 will be obsoleting --> 处理依赖关系 systemd,它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 --> 处理依赖关系 systemd,它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 --> 处理依赖关系 libstdc++.so.6(GLIBCXX_3.4.15)(64bit),它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 --> 处理依赖关系 libc.so.6(GLIBC_2.17)(64bit),它被软件包 mysql-community-server-5.6.46-2.el7.x86_64 需要 ---> Package mysql-libs.x86_64 0:5.1.73-8.el6_8 will be 取代 --> 处理依赖关系 libmysqlclient.so.16()(64bit),它被软件包 2:postfix-2.6.6-8.el6.x86_64 需要 --> 处理依赖关系 libmysqlclient.so.16()(64bit),它被软件包 redland-1.0.7-11.el6.x86_64 需要 --> 处理依赖关系 libmysqlclient.so.16()(64bit),它被软件包 perl-DBD-MySQL-4.013-3.el6.x86_64 需要 --> 处理依赖关系 libmysqlclient.so.16(libmysqlclient_16)(64bit),它被软件包 2:postfix-2.6.6-8.el6.x86_64 需要 --> 处理依赖关系 libmysqlclient.so.16(libmysqlclient_16)(64bit),它被软件包 redland-1.0.7-11.el6.x86_64 需要 --> 处理依赖关系 libmysqlclient.so.16(libmysqlclient_16)(64bit),它被软件包 perl-DBD-MySQL-4.013-3.el6.x86_64 需要 --> 处理依赖关系 libmysqlclient_r.so.16()(64bit),它被软件包 1:qt-mysql-4.6.2-28.el6_5.x86_64 需要 --> 处理依赖关系 libmysqlclient_r.so.16(libmysqlclient_16)(64bit),它被软件包 1:qt-mysql-4.6.2-28.el6_5.x86_64 需要 --> 完成依赖关系计算 错误:Package: perl-DBD-MySQL-4.013-3.el6.x86_64 (@base/$releasever) Requires: libmysqlclient.so.16(libmysqlclient_16)(64bit) 正在删除: mysql-libs-5.1.73-8.el6_8.x86_64 (@base/$releasever) libmysqlclient.so.16(libmysqlclient_16)(64bit) Obsoleted By: mysql-community-libs-5.6.46-2.el7.x86_64 (mysql56-community) Not found 错误:Package: mysql-community-client-5.6.46-2.el7.x86_64 (mysql56-community) Requires: libc.so.6(GLIBC_2.17)(64bit) 错误:Package: mysql-community-server-5.6.46-2.el7.x86_64 (mysql56-community) Requires: libc.so.6(GLIBC_2.17)(64bit) 错误:Package: mysql-community-server-5.6.46-2.el7.x86_64 (mysql56-community) Requires: libstdc++.so.6(GLIBCXX_3.4.15)(64bit) 错误:Package: 2:postfix-2.6.6-8.el6.x86_64 (@base/$releasever) Requires: libmysqlclient.so.16()(64bit) 正在删除: mysql-libs-5.1.73-8.el6_8.x86_64 (@base/$releasever) libmysqlclient.so.16()(64bit) Obsoleted By: mysql-community-libs-5.6.46-2.el7.x86_64 (mysql56-community) Not found 错误:Package: redland-1.0.7-11.el6.x86_64 (@base/$releasever) Requires: libmysqlclient.so.16(libmysqlclient_16)(64bit) 正在删除: mysql-libs-5.1.73-8.el6_8.x86_64 (@base/$releasever) libmysqlclient.so.16(libmysqlclient_16)(64bit) Obsoleted By: mysql-community-libs-5.6.46-2.el7.x86_64 (mysql56-community) Not found 错误:Package: 1:qt-mysql-4.6.2-28.el6_5.x86_64 (@base/$releasever) Requires: libmysqlclient_r.so.16(libmysqlclient_16)(64bit) 正在删除: mysql-libs-5.1.73-8.el6_8.x86_64 (@base/$releasever) libmysqlclient_r.so.16(libmysqlclient_16)(64bit) Obsoleted By: mysql-community-libs-5.6.46-2.el7.x86_64 (mysql56-community) Not found 错误:Package: 1:qt-mysql-4.6.2-28.el6_5.x86_64 (@base/$releasever) Requires: libmysqlclient_r.so.16()(64bit) 正在删除: mysql-libs-5.1.73-8.el6_8.x86_64 (@base/$releasever) libmysqlclient_r.so.16()(64bit) Obsoleted By: mysql-community-libs-5.6.46-2.el7.x86_64 (mysql56-community) Not found 错误:Package: 2:postfix-2.6.6-8.el6.x86_64 (@base/$releasever) Requires: libmysqlclient.so.16(libmysqlclient_16)(64bit) 正在删除: mysql-libs-5.1.73-8.el6_8.x86_64 (@base/$releasever) libmysqlclient.so.16(libmysqlclient_16)(64bit) Obsoleted By: mysql-community-libs-5.6.46-2.el7.x86_64 (mysql56-community) Not found 错误:Package: redland-1.0.7-11.el6.x86_64 (@base/$releasever) Requires: libmysqlclient.so.16()(64bit) 正在删除: mysql-libs-5.1.73-8.el6_8.x86_64 (@base/$releasever) libmysqlclient.so.16()(64bit) Obsoleted By: mysql-community-libs-5.6.46-2.el7.x86_64 (mysql56-community) Not found 错误:Package: mysql-community-server-5.6.46-2.el7.x86_64 (mysql56-community) Requires: systemd 错误:Package: mysql-community-libs-5.6.46-2.el7.x86_64 (mysql56-community) Requires: libc.so.6(GLIBC_2.17)(64bit) 错误:Package: perl-DBD-MySQL-4.013-3.el6.x86_64 (@base/$releasever) Requires: libmysqlclient.so.16()(64bit) 正在删除: mysql-libs-5.1.73-8.el6_8.x86_64 (@base/$releasever) libmysqlclient.so.16()(64bit) Obsoleted By: mysql-community-libs-5.6.46-2.el7.x86_64 (mysql56-community) Not found You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
解决方法:
1)首先进到/etc/yum.repos.d目录,然后编辑mysql-community.repo 文件,将enabled设置为0,如下面所示:
2)保存退出后重新安装即可。
如果在重新安装时出现新的错误:
yum install mysql-community-server
已加载插件:fastestmirror
设置安装进程
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirror.pregi.net
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
No package mysql-community-server available.
错误:无须任何处理
可以按照以下命令重新安装:
yum remove mysql mysql-server mysql-libs compat-mysql51
详情参照这个博客:CentOS6.8下完全干净卸载mysql
附:CentOS下MySQL数据库的安装