如何解决hadoop安装和使用过程中遇到的问题
本篇文章为大家展示了如何解决hadoop安装和使用过程中遇到的问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
1. 使用高版本的VMware安装的系统,在低版本的VMware打开出现bu'j不兼容问题:
VMware本身高版本的能够支持低版本VMware配置的虚拟机,但是反过来就不支持了。如果想在低版本的VMware打开用高版本VMware配置的虚拟机,可以如下操作:
1. 在欲打开虚拟机文件夹中找到后缀名为“.vmx”的文件,用记事本打开;
2. 找到“virtualHW.version = "11"”,将数字改为你现用VMware版本号或更低版本号;
3. 保存,操作完成,可以打开了。
2. 无法连接虚拟设备 floppy0。主机上没有相对应的设备。
默认情况下,虚拟机的虚拟软驱是使用主机的物理软驱,而我们的电脑一般不安装软驱,所以会提示“主机上没有相应的设备”。
解决:不用软驱,在虚拟机的设置里,将软盘取消掉,就不会出现此提示了。
3. Name node is in safe mode.
#1因为在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
也可以手动关闭:bin/hadoop dfsadmin -safemode leave
#1【错误Name node is in safe mode的解决方法】
4.Unauthorized request to start container.
其原因是namenode,datanode时间同步问题。(date命令分别看每个节点的时间)
解释同步:在Linux系统中,为了避免主机时间因为在长时间运行下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,一般使用ntp服务来同步不同机器的时间。NTP 是网络时间协议(Network Time Protocol)的简称。
检查虚拟机是否可以使用网络,如果可以则进行时间按同步:
法一:
root#crontab -e
添加:0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
法二:
root# /usr/sbin/ntpdate cn.pool.ntp.org
一下是关于ntp的一些指令:
查看ntp服务的状态:
# service ntpd status
检查是否有ntp相关包(使用rpm或yum安装):
# rpm -qa | grep ntp
#使用rpm方式安装 rpm -ivh ntp-4.2.2p1-8.el5.i386.rmp #使用yum方式安装 yum -y install ntp.i* #使用rpm方式删除 rpm -e ntp-4.2.2pl-8.el5.i386.rpm #使用yum方式删除 yum -y remove ntp.i*
ntp服务配置:
配置文件:/etc/ntp.conf,将internet上的时间服务器作为内部标准时间来源
restrict default kod nomodify notrap nopeer noquery restrict 127.0.0.1 restrict -6::1 restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap #指定Internet上的时间服务器 restrict 207.46.232.182 mask 255.255.255.255 nomodify notrap noquery server 207.46.232.182 server 127.127.1.0 fudge 127.127.1.0 stratum 10 keys /etc/ntp/keys #指定NTP服务器日志文件 logfile /var/log/ntp
修改/etc/ntp/stpe-tickers文件(当ntpd服务启动时,会自动与该文件中的记录的上层ntp服务进行时间校对)
207.46.232.182 127.127.1.0
修改/etc/sysconfig/ntpd文件:
#允许BIOS与系统时间同步,也可以通过hwclock -w 命令 SYNC_HWCLOCK=yes
重新启动服务:
/sbin/service network restart
查看:
#显示本机上一次与上层ntp服务器同步时间的情况 ntpstat 如下显示: synchronised to local net at stratum 6 time correct to within 11 ms polling server every 64 s #查看本机与上层ntp服务器通信情况 ntpq -p 如下显示 remote refid st t when poll reach delay offset jitter ============================================================================== *LOCAL(0) .LOCL. 5 l 23 64 377 0.000 0.000 0.000
ntp服务的启动和暂停(NTP属于system):
#启动 service ntpd start #停止 Service ntpd stop #重新加载 service ntpd reload #查看当前启动状态 service ntpd status
ntp服务自动加载:
#在运行级别2、3、4、5上设置为自动运行 chkconfig ntpd on #在运行级别2、3、4、5上设置为不自动运行 chkconfig ntpd off #在运行级别3、5上设置为自动运行 chkconfig ntpd --level 35 on #在运行级别3、5上设置为不自动运行 chkconfig ntpd --level 35 off
查看ntp服务器时间:
ntpdate ntpserver
解决:多个datanode与namenode进行时间同步,在每台服务器执行
5.mfile3 not a SequenceFile
aggregatewordcount只能对二进制SequenceFile进行解析,而不能解析普通文本,需要hadoop 的api把file.txt转换成SequenceFile。
另外的解决办法:把文件的编码改为utf-8重新上传覆盖后就可以了(但是我的情况无法使用该方法解决)
6.java.lang.ClassNotFoundException: Top3
我是在宿主机的eclipse打包jar(未编译)包后移到hadoop安装目录下,再执行的时候提示该错误,很明显,我没有编译,当然还不能用,所以,不管你是在宿主机上或是虚拟机上,都要进行编译才可用。
7.错误: 程序包org.apache.hadoop.conf不存在
如果你是在虚拟机指令编译的话,要注意:
hadoop2.*的版本,所以需要使用的库都分散了(hadoop1.*的是集中在hadoop-1.*-core.jar),分别是hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3.jar;hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7.3.jar
法一:指令中明确标出classpath:
$javac -classpath hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3.jar /hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7.3.jar/hadoop-2.7.3/share/hadoop/common/lib/commons-cli-1.2.jar -d 存放的文件名 程序.java
法二:直接编辑classpath
超级用户身份打开/etc/profile编辑:
export HADOOP_HOME="hadoop的安装绝对目录hadoop-2.7.3"
export classpath="hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3.jar;hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7.3.jar;hadoop-2.7.3/share/hadoop/common/lib/commons-cli-1.2.jar"
保存退出
文件生效:source /etc/profile
上述内容就是如何解决hadoop安装和使用过程中遇到的问题,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注美国cn2行业资讯频道。