大数据学习遇到的坑(长期更新)

  这个学期,我们开始接触大数据,并且开始学习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数据库的安装


  

原文地址:https://www.cnblogs.com/yandashan666/p/11646870.html