本文整理了在hadoop学习过程中遇到的各种问题。

windows下开发环境搭建

大部分情况下,我们都是在windows下开发,hadoop则一般部署于linux服务器(无论是CDH还是原生hadoop,也无论是单机伪分布式还是完全分布式)。很多教程的做法都是打成jar,然后上传到linux服务器,再提交执行。这完全就是外行人教科书式的做法。实际开发不能这样进行,就跟c++开发一样,虽然是linux c++开发,我们同样不会windows写好到linux测试。

其安装很简单,下载hadoop发行版,并下载hadoop.dll-and-winutils.exe-for-hadoop2.7.3-on-windows_X64-master.zip。解压内容复制到HADOOP_HOME/bin下,这样运行就不会找不到相关工具如winutils.exe,hadoop的版本不一定要和windows tools相同,例如HADOOP发行版2.8.x完全是可以的。

增加hadoop maven依赖:

  1. <dependency>
  2. <groupId>org.apache.hadoop</groupId>
  3. <artifactId>hadoop-hdfs</artifactId>
  4. <version>2.8.5</version>
  5. </dependency>
  6.  
  7. <dependency>
  8. <groupId>org.apache.hadoop</groupId>
  9. <artifactId>hadoop-client</artifactId>
  10. <version>2.8.5</version>
  11. </dependency>
  12.  
  13. <dependency>
  14. <groupId>org.apache.hadoop</groupId>
  15. <artifactId>hadoop-common</artifactId>
  16. <version>2.8.5</version>
  17. </dependency>

然后只要将$HADOOP_HOME/conf中的core-site.xml和log4j.properties复制到resources目录下即可。core-site.xml中添加HADOOP服务器HDFS地址即可:

  1. <property>
  2. <name>fs.defaultFS</name>
  3. <!-- 这里的端口号可能是9000或8020,需要看服务器core-site.xml文件中的fs.default.name-->
  4. <value>hdfs://192.168.223.141:8020</value>
  5. </property>

这样就可以本地提交执行(这也是实际的做法)了。

完整的手册可以参考本博客windows eclipse直接访问远程linux hadoop开发环境配置(最标准的做法)

org.apache.hadoop.ipc.RpcException: RPC response exceeds maximum data length(客户端执行的时候,服务器端执行没有报错)

原因是目标Hadoop连接有误,IP或端口,也就是上面 fs.defaultFS的设置以及FileInputFormat.addInputPath(job, new Path("hdfs://192.168.223.141:8020/user/cloudera/sample_data/tab1"));的值不正确,该值使用服务器core-site.xml文件中的fs.default.name的值,并确保对外开通。如下:

有些帖子说是ipc.maximum.data.length过小的问题,但是我们没有修改过,所以134217728肯定足够大了。

执行hadoop命令报"No FileSystem for scheme: hdfs"

一直好好的,不知道为啥突然出现“No FileSystem for scheme: hdfs”。如下:

重新登录即可,原因未知。

客户端执行的时候报java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/exceptions/YarnRuntimeException

  1. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/exceptions/YarnRuntimeException
  2. at org.apache.hadoop.mapred.LocalDistributedCacheManager.setup(LocalDistributedCacheManager.java:93)
  3. at org.apache.hadoop.mapred.LocalJobRunner$Job.<init>(LocalJobRunner.java:171)
  4. at org.apache.hadoop.mapred.LocalJobRunner.submitJob(LocalJobRunner.java:758)
  5. at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:242)
  6. at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1341)
  7. at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1338)
  8. at java.security.AccessController.doPrivileged(Native Method)
  9. at javax.security.auth.Subject.doAs(Subject.java:422)
  10. at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1844)
  11. at org.apache.hadoop.mapreduce.Job.submit(Job.java:1338)
  12. at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1359)
  13. at hadoop.ParquetNewMR.main(ParquetNewMR.java:104)
  14. Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.yarn.exceptions.YarnRuntimeException
  15. at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
  16. at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  17. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
  18. at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  19. ... 12 more

服务器端执行的时候报警告java.lang.NoClassDefFoundError: org/apache/parquet/format/CompressionCodec,但是运行成功了,文件内容为空

hadoop-common包在maven依赖中,而且能找到(不知道是客户端还是服务器端问题,看起来是服务器端的问题)。

原因:原来因为parquet相关依赖包下载不下载,改成了systemPath模式,所以有这个问题。直接从仓库下载后,这个问题是没有了。

java.lang.VerifyError: Bad return type location:org/apache/hadoop/hdfs/DFSClient.getQuotaUsage

  1. 2018-02-19 10:11:49,328 [ERROR] [main] |app.DAGAppMaster|: Error starting DAGAppMaster
  2. java.lang.VerifyError: Bad return type
  3. Exception Details:
  4. Location:
  5. org/apache/hadoop/hdfs/DFSClient.getQuotaUsage(Ljava/lang/String;)Lorg/apache/hadoop/fs/QuotaUsage; @94: areturn
  6. Reason:
  7. Type 'org/apache/hadoop/fs/ContentSummary' (current frame, stack[0]) is not assignable to 'org/apache/hadoop/fs/QuotaUsage' (from method signature)

看起来像是hadoop的版本和hadoop maven客户端版本不一致的问题,因为使用的是CDH-5.13的版本,将maven依赖版本调整为2.6.0之后,该错误没有了。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/htrace/core/Tracer$Builder,但是依赖已经有了,如下:

  1. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/htrace/core/Tracer$Builder
  2. at org.apache.hadoop.fs.FsTracer.get(FsTracer.java:42)
  3. at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2697)
  4. at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:96)
  5. at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2747)
  6. at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2729)
  7. at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:384)
  8. at com.abc.test.HdfsDAO.copyFile(HdfsDAO.java:96)
  9. at com.abc.test.HdfsDAO.main(HdfsDAO.java:34)
  10. Caused by: java.lang.ClassNotFoundException: org.apache.htrace.core.Tracer$Builder
  11. at java.net.URLClassLoader.findClass(Unknown Source)
  12. at java.lang.ClassLoader.loadClass(Unknown Source)
  13. at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
  14. at java.lang.ClassLoader.loadClass(Unknown Source)
  15. ... 8 more

原因:htrace-core 3.0.4中的报名时org.htrace而不是org.apache.htrace包,前者为hadoop 2.6依赖,后者需要人工引入依赖。另外好像cdh 5.13不支持jdk 8,因为是1.8依赖了htrace-core4的会出现。调整为jdk 1.7、hadoop 2.6之后,问题就解决了。

提醒:hadoop开发,最好是服务器的版本和开发依赖的java库版本一致,这样不容易出问题。CDH的hadoop home是/var/lib/hadoop。

Hive执行命令非常慢(无论是hive客户端还是hive2的beeline都是如此)

  1. [root@quickstart ~]# beeline -u jdbc:hive2://localhost:10000/default
  2. scan complete in 2ms
  3. Connecting to jdbc:hive2://localhost:10000/default
  4. Connected to: Apache Hive (version 1.1.0-cdh5.13.0)
  5. Driver: Hive JDBC (version 1.1.0-cdh5.13.0)
  6. Transaction isolation: TRANSACTION_REPEATABLE_READ
  7. Beeline version 1.1.0-cdh5.13.0 by Apache Hive
  8. 0: jdbc:hive2://localhost:10000/default> show tables;
  9. INFO : Compiling command(queryId=hive_20190410202727_01c12a1b-1266-4019-a94f-b0cc8b743577): show tables
  10. INFO : Semantic Analysis Completed
  11. INFO : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:tab_name, type:string, comment:from deserializer)], properties:null)
  12. INFO : Completed compiling command(queryId=hive_20190410202727_01c12a1b-1266-4019-a94f-b0cc8b743577); Time taken: 0.073 seconds
  13. INFO : Executing command(queryId=hive_20190410202727_01c12a1b-1266-4019-a94f-b0cc8b743577): show tables
  14. INFO : Starting task [Stage-0:DDL] in serial mode
  15. INFO : Completed executing command(queryId=hive_20190410202727_01c12a1b-1266-4019-a94f-b0cc8b743577); Time taken: 0.039 seconds
  16. INFO : OK
  17. +-----------+--+
  18. | tab_name |
  19. +-----------+--+
  20. +-----------+--+
  21. No rows selected (68.033 seconds)
  22.  
  23. 0: jdbc:hive2://localhost:10000/default> create table parquet_xxx(name string,age int); -- 半天无响应,卡死

https://blog.csdn.net/yukuaifeng/article/details/78810450也是这个问题,但是参照之后也没解决。

20190420最新更新,问题已经找到,quickstart vm存在这个问题,换成自己搭建的cdh hadoop环境后,就没有这个问题了。

WARNING: Hive CLI is deprecated and migration to Beeline is recommended

hive2已经不推荐使用hive cli,而是beeline,参考:https://www.cnblogs.com/tomato0906/articles/6057333.html

HUE Web UI Error Impala Could not connect to localhost:21050

impala服务没有启动的原因。

hadoop过程中遇到的错误与解决方法的更多相关文章

  1. 国内不fq安装K8S四: 安装过程中遇到的问题和解决方法

    目录 4 安装过程中遇到的问题和解决方法 4.1 常见问题 4.2 常用的操作命令 4.3 比较好的博客 国内不fq安装K8S一: 安装docker 国内不fq安装K8S二: 安装kubernet 国 ...

  2. 将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法

    本博客主要是说一下,,如何将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法. 1.先在阿里云上购买一台阿里云服务器(ECS云服务器): 2.远程连接上该服务器,在 ...

  3. 2016最新cocoapods安装流程,安装过程中遇到的问题及解决方法

    现在的cocoapods与之前比较.有很多不一样的地方.自己试了一试,终于搞定.现在大概纪录一下. 1.首先查看ruby是否是最新版的. ruby是通过rvm安装的所以需要先安装rvm后查看ruby是 ...

  4. SQL Server2000企业管理器在Win7中新建表错误的解决方法

    Sql Server2000建表错误与解决方法: 在Windwos7中SQL Server 2000企业管理器在新建表时会提示错误,尝试各种方法均告无效,包括升级SP3和SP4,最终发现如下规律可以暂 ...

  5. Laravel中常见的错误与解决方法小结

    一.报错: 「Can't swap PDO instance while within transaction」 通过查询 Laravel 源代码,可以确认异常是在 setPdo 方法中抛出的: ? ...

  6. Hadoop环境搭建过程中遇到的问题以及解决方法

    1.启动hadoop之前,ssh免密登录slave主机正常,使用命令start-all.sh启动hadoop时,需要输入slave主机的密码,说明ssh文件权限有问题,需要执行以下操作: 1)进入.s ...

  7. caffe安装过程中遇到的问题以及解决方法

    1. 在安装依赖库的时候,遇到: @gxjun-Latitude-E5440:~$ sudo apt-get install libatlas-base-dev 正在读取软件包列表... 完成 正在分 ...

  8. 最新cocoapods安装流程,安装过程中遇到的问题及解决方法

    最近重新安装了一次cocoapods,参考的安装流程:http://blog.csdn.net/showhilllee/article/details/38398119/ 但是现在的cocoapods ...

  9. VC6.0开发中一些链接错误的解决方法

    (1)error LNK2001: unresolved external symbol _main 编号:LNK2001 直译:未解决的外部符号:_main. 错误分析:缺少main函数.看看mai ...

随机推荐

  1. 寻找真正的入口(OEP)--广义ESP定律

    1.前言 在论坛上看到很多朋友,不知道什么是ESP定律,ESP的适用范围是什么,ESP定律的原理是什么,如何使用ESP定律?看到了我在“”调查结果发现,大家对ESP定律很感兴趣,当然因为实在是太好用了 ...

  2. 数据结构day1:排序

    1,冒泡排序算法的python实现 def bubble_sort(alist): pass count = len(alist)-1 for index in range(count,0,-1): ...

  3. flutter学习之二Material Design设计规范

    前言: 最近在自学flutter跨平台开发,从学习的过程来看真心感觉不是那么一件特别容易的事.不但要了解语法规则, 还要知晓常用控件,和一些扩展性的外延知识,所以套一句古人的话“路漫漫其修远矣,无将上 ...

  4. angular脚手架搭建

    下面以angular2.0为例前提已安装好node.js 1.安装cli执行如下命令npm install -g @angular/cli 2.创建新项目ng new my-app 3.然后到该项目目 ...

  5. spring框架学习之--数据库操作增删改查

    基于spring的NamedParameterJdbcTemplate操作数据库 首先在 resources 文件夹下添加数据库配置文件jdbc.properties 配置常用的数据库信息 consu ...

  6. 2019春第十周作业Compile Summarize

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 在这里 我在这个课程的目标是 能够对C语言的编写更加得心应手 这个作业在那个具体方面帮助我实现目标 结构体更进一步 参考文献与网址 C语言 ...

  7. StringBuufer与StringBulder线程的区别

    StringBulder的append方法 不是synchronized修饰的   线程不安全     效率相对很快StringBuufer的append方法  是 synchronized修饰的  ...

  8. Percona-Toolkit 之 pt-table-checksum 总结

    pt-table-checksum - Verify MySQL replication integrity. pt-table-checksum performs an online replica ...

  9. ubuntu下zip文件操作

    转自 https://blog.csdn.net/hpu11/article/details/71524013 .zip $ zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹 ...

  10. C#设计模式(13)——代理模式(Proxy Pattern)(转)

    一.引言 在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代 ...