这是一位网友收集的hadoop,hbase,zookeeper错误日志及部分解决办法,以备以后遇到问题作为参考之用。 hadoop-0.20.2 & hbase-0.90.1集群启动错误问题解决: 问题如下:org.apache.hadoop.ipc.RPC$VersionMismatch: Protocol org.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client = 42, server = 41) at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:364)at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:113) at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:215) at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:177) …………………………………… 2011-01-21 00:14:41,550 INFO org.apache.hadoop.hbase.master.HMaster: Aborting 初步认为是hadoop-0.20.2 & hbase-0.90.1版本问题造成的,hbase-0.90.1/lib中hadoop-core-0.20-append- r1056497.jar使用的hadoop-core-0.20,因此将其替换为hadoop-0.20.2-core.jar即可 Hbase重启之后就无法启动的现象: 我们使用了数台机器构建了一个集群,并且按照Hadoop/Hbase的"Getting Started"安装配置了Hadoop和Hbase。之后能够正常启动Hadoop和Hbase,并且创建table和插入数据。 不过,当我们访问Master的页面时: http://10.37.17.252:60010/master.jsp ,我们发现了第一个问题:在regionserver区域,出现了2个127.0.0.1的regionserver,但是我们并没有在conf/regionservers将master设置为regionserver: Region ServersAddress Start Code Load 127.0.0.1:60030 1263383321075 requests=0, regions=0, usedHeap=0, maxHeap=0 127.0.0.1:60030 1263383321096 requests=0, regions=0, usedHeap=0, maxHeap=0 ……………………………… 但是,虽然出现了以上的怪现象,但是hbase似乎仍然能够正常工作。只是,当我们打算重启hbase的时候,我们发现了第二个问题:我们尝试运行bin/stop-hbase.sh,之后,又运行启动hbase的脚本:bin/ start-hbase.sh,这一次,当我们访问master页面的时候http://10.37.17.252:60010/master.jsp,出现了如下的错误: HTTP ERROR: 500Trying to contact region server null for region , row ", but failed after 3 attempts. Exceptions: org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed setting up proxy to /10.37.17.248:60020 after attempts=1 ………………………… 此时,Hbase能够进入shell,但是无法执行任何操作。于是再次试图关闭hbase的时候,却发现无法停止master,那个"stop master"后面的“.”出现了许许多多,仍然无法停止master节点。于是我们不得不强制kill掉master。Hbase就这样挂掉了。。。。。 Hbase重启之后就无法启动的原因分析: 127.0.0.1 WAMDM1 localhost.localdomain localhost 大家注意第一行。我们在使用配置Hadoop/Hbase的时候,常常使用主机名来代替IP使用,但是在WAMDM1的机器上,WAMDM1被映射为127.0.0.1,于是master和regionserver之间的通信就出错。这也就是为什么我们经常在日志中以及错误提示中看到如下信息: Server at /10.37.17.248:60020 could not be reached after 1 tries, giving up. org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed setting up proxy to /10.37.17.248:60020 after attempts=1at org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:424) ……………… Hbase重启之后就无法启动的解决办法: 127.0.0.1 localhost 同时,为了保险起见,我在stop-hbase.sh中,也加入停止regionservers的命令(虽然在网上查不到停止regionservers的必要性,以及这个脚本存在bug的证据,但是这样改经过测试是没有问题的): "$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}" --hosts "${HBASE_REGIONSERVERS}" stop regionserver 这个命令需要加在stop master之前。至于不加入这个停止regionservers的命令是否可行,在未来我会进一步测试。 通过以上修改,出现两个127.0.0.1的Regionserver的问题,以及Hbase重启就挂的问题得到彻底解决! Hbase重启之后就无法启动的问题解决之后的反思: 在配置分布式系统的时候,一定要注意各个机器之间配置的统一性,包括主机名(hosts文件)、用户名、Hadoop/Hbase各种配置文件等,对于不一致的情况,一定要特别仔细的检查,然后统一起来。已经不止一次在这方面吃亏了,希望大家切记!!!! 转自:http://www.wangzhongyuan.com/archives/788.html 在重新启动HBase服务的时候可能会出现如下的错误: INFO ipc.HbaseRPC: Server at /227.23.56.100:60020 could not be reached after 1 tries, giving up. 出现这个错误的原因可能会有很多,比如各个配置文件中的地址不一致等,但我这里给出的一个可能原因是端口号被其他某一进程占用,或者还是HBase进程使用着,但此服务(或说此端口)已经不再可用,解决的方式为:通过此端口查找到对应的进程,然后杀死对应的进程,再重启HBase服务,你会发现上面出现的错误将消失,服务启动正常。 具体步骤为: 1、 lsof -i:60020 2、 kill -9 PID(进程ID) 3、 重启HBase服务。FAILED: Error in metadata: MetaException(message:org.apache.hadoop.hbase.MasterNotRunningExceptio n: dfsname1.cptrue.com:60000 最近在做数据挖掘方面的事情,需要hive+hbase表,但是使用hive链接hbase现有的数据库时,总是抛异常。 FAILED: Error in metadata: MetaException(message:org.apache.hadoop.hbase.MasterNotRunningException: dfsname1.cptrue.com:60000 ……………………………… FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask hive> create EXTERNAL table hbase_table_log(key string, label bigint) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 解决方案:这个问题基本就是hive+hbase版本的问题,你需要将你所使用的hbase的jar包拷贝到hive的lib目录下进行替换,这还不算结束,你需要将hbase-site.xml拷贝到conf目录下面。在不重启hive的情况下,重新建立external table,恭喜,运行成功!!! 这里需要注意的地方是with下面的mapping,它对应的值":key,b:label",不能出现空格,否则它会告诉你 FAILED: Error in metadata: MetaException(message:Column Family b is not defined in hbase table log) 希望大家日后遇到这个问题的时候,可以顺利解决! FAILED: Error in metadata: MetaException(message:org.apache.hadoop.hbase.MasterNotRunningException: CNC-JN-R-541:60000 出现这个错误的原因是我引入的hbase包和hive自带的hive包冲突,删除hive/lib下的 hbase-0.89.0-SNAPSHOT.jar, OK了。
FAILED: Error in metadata: MetaException(message:Column Family department is not defined in hbase table hello)
当使用hive相关管理已经存在的hbase 多列table时,出现上面错误,而且列族“department ”的确存在,最终发现原因是:在hive中使用CREATE EXTERNAL TABLE 创建表的时候,"hbase.columns.mapping"的值中不能包含空格
hdfs中,提示权限错误: 代码如下: Exception in thread "main" org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=lenovo-pc\lenovo, access=WRITE, inode="hadoopnode":hadoopnode:supergroup:rwxr-xr-x 解决办法如下: hadoop fs -chmod 777 /user/hadoop Hadoop】集群之外的机器如何连接到集群并与HDFS交互,提交作业给Hadoop集群 转自:http://blog.csdn.net/zklth/article/details/5618942 集群以外的机器如何访问Hadoop集群,并像集群中提交作业和传送数据 <property> </configuration> (3)这样便能执行命令,查看集群状态,向集群提交作业
[root@gc03vm12 nutch-1.0]# bin/hadoop dfs -ls / [root@gc03vm12 nutch-1.0]# bin/hadoop dfs -mkdir x 主目录(/user/root)中创建x目录,提示以下信息
nutch用户格式化namenode,启动hadoop集群(会用到nutch用户的公钥信息,ssh配置)后,执行命令, 那么如何创建一个root用户呢,可以这样做 用户权限和Linux类似,nutch是超级用户。 例如nutch在root的home目录下创建目录s,则s的权限如下,属于nutch,组是root
这是因为root用户对/tmp目录(hdfs目录)没有写权限,因为作业执行时,会在/tmp目录下生成相应的job文件, 因此非超级用户提交作业时,用户问题是一个很麻烦的问题 注: hadoop有些命令只能在namenode上执行 在windows eclipse开发环境提交job到远处linux hadoop集群,运行mapred报错“IOException:Cannotrunprogram "chmod": CreateProcess error=2” 原因:安装cygwin,而且需要设置"cygwin\bin"到环境变量PATH中,使用eclipse-plugin提交mapreduce程序,必须在window端安装cygwin,并将cygwin\bin"到环境变量PATH中,否则不行。 如果eclipse-plugin提交任务遇到这个错误:org.apache.hadoop.security.AccessControlException: Permission denied: user=cyg_server, access=EXECUTE, inode="job_201010161322_0003":heipark:supergroup:rwx------ 解决: 1、刚开始还使用“./bin/hadoop dfs -chmod 777 ”,后来发现老是这样设置麻烦。可以取消hadoop hdfs的用户权限检查。打开conf/hdfs-site.xml,找到dfs.permissions属性修改为false(默认为true)OK了。注意生产环境处于安全考虑不要这么搞。 2、修改hadoop location参数,在advanced parameter选项卡中,找到hadoop.job.ugi项,将此项改为“你的hadoop用户名”,Tardis,这样就不会出现那个错误了
如果运行简单的hadoop mapreduce wordcount程序,点击run onhadoop出现以下错误: 11/08/16 10:31:39 WARN mapred.LocalJobRunner: job_local_0001 原因:客户端程序运行时java虚拟机内存分配不够 解决:修改run configuration(右键要执行的程序,run as >run configurations),弹出窗口中左侧选择要执行的程序,右边选择Arguments选项卡,在VM arguments栏中加入-Xmx1024m,保存后执行没有问题(即将执行时虚拟机内存调大) |