• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

大数据常见错误解决方案

bigdata admin 来源:cnblog 8个月前 (04-15) 562次浏览 0个评论 扫描二维码

1、用./bin/spark-shell 启动 spark 时遇到异常:java.net.BindException: Can’t assign requested address: Service ‘sparkDriver’ failed after 16 retries!

解决方法:add export SPARK_LOCAL_IP=”127.0.0.1″ to spark-env.sh

2、java Kafka producer error:ERROR kafka.utils.Utils$ – fetching topic metadata for topics [Set(words_topic)] from broker [ArrayBuffer(id:0,host: xxxxxx,port:9092)] failed

解决方法:Set ‘advertised.host.name’ on server.properties of Kafka broker to server’s realIP(same to producer’s ‘metadata.broker.list’ property)

3、java.net.NoRouteToHostException: No route to host

解决方法:zookeeper 的 IP 要配对

4、Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)   java.net.UnknownHostException: linux-pic4.site:

解决方法:add your hostname to /etc/hosts: 127.0.0.1 localhost linux-pic4.site

5、org.apache.spark.SparkException: A master URL must be set in your configuration

解决方法:SparkConf sparkConf = new SparkConf().setAppName(“JavaDirectKafkaWordCount”).setMaster(“local”);

6、Failed to locate the winutils binary in the hadoop binary path

解决方法:先安装好 hadoop

7、启动 spark 时: Failed to get database default, returning NoSuchObjectException

解决方法:1)Copy winutils.exe from here(https://github.com/steveloughran/winutils/tree/master/hadoop-2.6.0/bin) to some folder say, C:\Hadoop\bin. Set HADOOP_HOME to C:\Hadoop.2)Open admin command prompt. Run C:\Hadoop\bin\winutils.exe chmod 777 /tmp/hive

8、org.apache.spark.SparkException: Only one SparkContext may be running in this JVM (see SPARK-2243). To ignore this error, set spark.driver.allowMultipleContexts = true.

解决方法:Use this constructor JavaStreamingContext(sparkContext: JavaSparkContext, batchDuration: Duration)  替代  new JavaStreamingContext(sparkConf, Durations.seconds(5));

9、Reconnect due to socket error: java.nio.channels.ClosedChannelException

解决方法:kafka 服务器 broker ip 写对

10、java.lang.IllegalArgumentException: requirement failed: No output operations registered, so nothing to execute

解决方法:tranformation 最后一步产生的那个 RDD 必须有相应 Action 操作,例如 massages.print()等

11、经验:spark 中数据写入 ElasticSearch 的操作必须在 action 中以 RDD 为单位执行
12、 Problem binding to [0.0.0.0:50010] java.net.BindException: Address already in use;

解决方法:master 和 slave 配置成同一个 IP 导致的,要配成不同 IP

13、CALL TO LOCALHOST/127.0.0.1:9000

解决方法:host 配置正确,/etc/sysconfig/network    /etc/hosts    /etc/sysconfig/network-scripts/ifcfg-eth0

13、打开 namenode:50070 页面,Datanode Infomation 只显示一个节点

解决方法:SSH 配置错误导致,主机名一定要严格匹配,重新配置 ssh 免密码登录

14、经验:搭建集群时要首先配置好主机名,并重启机器让配置的主机名生效
15、INFO hdfs.DFSClient: Exception in createBlockOutputStream  java.net.NoRouteToHostException: No route to host

解决方法:如果主从节点能相互 ping 通,那就关掉防火墙 service iptables stop

16、经验:不要随意格式化 HDFS,这会带来数据版本不一致等诸多问题,格式化前要清空数据文件夹
17、namenode1: ssh: connect to host namenode1 port 22: Connection refused

解决方法:sshd 被关闭或没安装导致,which sshd 检查是否安装,若已经安装,则 sshd restart,并 ssh 本机 hostname,检查是否连接成功

18、Log aggregation has not completed or is not enabled.

解决方法:在 yarn-site.xml 中增加相应配置,以支持日志聚合

19、failed to launch org.apache.spark.deploy.history.History Server full log in

解决方法:正确配置 spark-defaults.xml,spark-en.sh 中 SPARK_HISTORY_OPTS 属性

20、Exception in thread “main” org.apache.spark.SparkException: Yarn application has already ended! It might have been killed or unable to launch application master.

解决方法:yarn-lient 模式出现的异常,暂时无解

21、hadoop 的文件不能下载以及 YARN 中 Tracking UI 不能访问历史日志

解决方法:windows 系统不能解析域名所致,把 hosts 文件 hostname 复制到 windows 的 hosts 中

22、经验:HDFS 文件路径写法为:hdfs://master:9000/文件路径,这里的 master 是 namenode 的 hostname,9000 是 hdfs 端口号。
23、Yarn JobHistory Error: Failed redirect for container

解决方法:将 http://:19888/jobhistory/logs  配置到 yarn-site.xml 中,重启 yarn 和 JobHistoryServer

24、通过 hadoop UI 访问 hdfs 文件夹时,出现提示 Permission denied: user=dr.who

解决方法:namonode 节点终端执行:hdfs dfs -chmod -R 755 /

25、经验:Spark 的 Driver 只有在 Action 时才会收到结果
26、经验:Spark 需要全局聚合变量时应当使用累加器(Accumulator)
27、经验:Kafka 以 topic 与 consumer group 划分关系,一个 topic 的消息会被订阅它的消费者组全部消费,如果希望某个 consumer 使用 topic 的全部消息,可将该组只设一个消费者,每个组的消费者数目不能大于 topic 的 partition 总数,否则多出的 consumer 将无消可费
28、java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;

解决方法:统一 ES 版本,尽量避免直接在 spark 中创建 ES client

29、eturned Bad Request(400) – failed to parse;Compressor detection can only be called on some xcontent bytes or compressed xcontent bytes; Bailing out..

解决方法:写入 ES 的数据格式纠正

30、java.util.concurrent.TimeoutException: Cannot receive any reply in 120 seconds

解决方法:确保所有节点之间能够免密码登录

31、集群模式下,spark 无法向 elasticsearch 写入数据

解决方法:采用这种写入方式(带上 es 配置的 Map 参数)results.foreachRDD(javaRDD -> {JavaEsSpark.saveToEs(javaRDD, esSchema, cfg);return null;});

32、经验:所有自定义类要实现 serializable 接口,否则在集群中无法生效
33、经验:resources 资源文件读取要在 Spark Driver 端进行,以局部变量方式传给闭包函数
34、通过 nio 读取资源文件时,java.nio.file.FileSystemNotFoundException  at com.sun.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:171)

解决方法:打成 jar 包后 URI 发生变化所致,形如 jar:file:/C:/path/to/my/project.jar!/my-folder,要采用以下解析方式,

final Map env = new HashMap<>();
final String[] array = uri.toString().split(“!”);
final FileSystem fs = FileSystems.newFileSystem(URI.create(array[0]), env);
final Path path = fs.getPath(array[1]);
35、经验:DStream 流转化只产生临时流对象,如果要继续使用,需要一个引用指向该临时流对象
36、经验:提交到 yarn cluster 的作业不能直接 print 到控制台,要用 log4j 输出到日志文件中
37、java.io.NotSerializableException: org.apache.log4j.Logger

解决方法:序列化类中不能包含不可序列化对象,you have to prevent logger instance from default serializabtion process, either make it transient or static. Making it static final is preferred option due to many reason because if you make it transient than after deserialization logger instance will be null and any logger.debug() call will result in NullPointerException in Java because neither constructor not instance initializer block is called during deserialization. By making it static and final you ensure that its thread-safe and all instance of Customer class can share same logger instance, By the way this error is also one of the reason Why Logger should be declared static and final in Java program.

38、log4j:WARN Unsupported encoding

解决方法:1.把 UTF 改成小写 utf-8    2.设置编码那行有空格

39、MapperParsingException[Malformed content, must start with an object

解决方法:采用接口 JavaEsSpark.saveJsonToEs,因为 saveToEs 只能处理对象不能处理字符串

40、 ERROR ApplicationMaster: SparkContext did not initialize after waiting for 100000 ms. Please check earlier log output for errors. Failing the application

解决方法:资源不能分配过大,或者没有把.setMaster(“local[*]”)去掉

41、WARN Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)

解决方法:配置文件 broker 编号要写对,命令中的 IP 写真实 IP

42、 User class threw exception: org.apache.spark.SparkException: org.apache.spark.SparkException: Couldn’t find leaders for Set([mywaf,7], [mywaf,1])

解决方法:正确配置 kafka,并重新创建 topic

43、在 ES 界面发现有节点 shard 分片不显示

解决方法:该节点磁盘容量不足,清理磁盘增加容量

 

44、The method updateStateByKey(Function2,Optional,Optional>, int) in the type JavaPairDStream is not applicable for the arguments (Function2,Optional,Optional>, int)

解决方法:Spark use com.google.common.base.Optional not jdk default package java.util.Optional

45、NativeCrc32.nativeComputeChunkedSumsByteArray

解决方法:配置 eclipse 的 hadoop-home,bin 和 system32 文件夹中加入 64 位的 2.6 版本的 hadoop.dll

46、经验:Spark Streaming 包含三种计算模式:nonstate 、stateful 、window

47、Yarn 的 RM 单点故障

解决方法:通过三节点 zookeeper 集群和 yarn-site.xml 配置文件完成 Yarn HA

48、经验:kafka 可通过配置文件使用自带的 zookeeper 集群

49、经验:Spark 一切操作归根结底是对 RDD 的操作

50、如何保证 kafka 消息队列的强有序

解决方法:把需要强有序的 topic 只设置一个 partition

51、linux 批量多机互信

解决方法:pub 秘钥配成一个

52、org.apache.spark.SparkException: Failed to get broadcast_790_piece0 of broadcast_790

解决方法:去除 spark-defaults.conf 中 spark.cleaner.ttl 配置

53、Yarn HA 环境下,通过 web 访问 history 日志被跳转到 8088 而无法显示

解决方法:恢复 Yarn Http 默认端口 8088

54、but got no response. Marking as slave lost

解决方法:使用 yarn client 提交作业遇到这种情况,暂时无解

55、Using config: /work/poa/zookeeper-3.4.6/bin/../conf/zoo.cfg  Error contacting service. It is probably not running.

解决方法:配置文件不正确,例如 hostname 不匹配等

56、经验:部署 Spark 任务,不用拷贝整个架包,只需拷贝被修改的文件,然后在目标服务器上编译打包。

57、Spark setAppName doesn’t appear in Hadoop running applications UI

解决方法:set it in the command line for spark-submit “–name BetterName”

58、如何监控 Sprak Streaming 作业是否挂掉

解决方法:通过监控 Driver 端口或者根据 yarn 指令写 Linux 定时脚本监控

59、kafka 内外网问题

解决方法:kafka 机器双网卡,配置文件 server.properties 中 advertised.host.name 不要写 IP,用域名形式,外网的生产者和内网的消费者各自解析成自己所需的 IP。

60、经验:kafka 的 log.dirs 不要设置成/tmp 下的目录,貌似 tmp 目录有文件数和磁盘容量限制

61、kafka 搬机器后,在新的集群,topic 被自动创建,且只有一台 broker 负载

解决方法:server.properties 中加上 delete.topic.enable=true 和 auto.create.topics.enable=false,删除旧的 topic,重新创建 topic,重启 kafka

62、安装 sbt,运行 sbt 命令卡在 Getting org.scala-sbt sbt 0.13.6 …

解决方法:sbt takes some time to download its jars when it is run first time,不要退出,直至 sbt 处理完

63、经验:ES 的分片类似 kafka 的 partition

64、kafka 出现 OOM 异常

解决方法:进入 kafka broker 启动脚本中,在 export KAFKA_HEAP_OPTS=”-Xmx24G -Xms1G”调大 JVM 堆内存参数

65、linux 服务器磁盘爆满,检查超过指定大小的文件

解决方法:find / -type f -size +10G

66、spark-direct kafka streaming 限速

解决方法:spark.streaming.kafka.maxRatePerPartition,配置每秒每个 kafka 分区读取速率

67、org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest: Found unrecoverable error returned Not Found(404) – [EngineClosedException CurrentState[CLOSED]

解决方法:在 kopf 插件中对该索引先 close 再 open 即可。造成原因可能是 Index 创建时有 shard 坏掉。

68、Job aborted due to stage failure: Task not serializable:

解决方法:Serializable the class;Declare the instance only within the lambda function passed in map;Make the NotSerializable object as a static and create it once per machine;Call rdd.forEachPartition and create the NotSerializable object in there

69、Pipeline write will fail on this Pipeline because it contains a stage which does not implement Writable

解决方法:this cannot be done as of Spark 1.6,需升级 spark 版本

70、IDEA 从 git 导入 scala 项目,通篇提示变量 never used

解决方法:将 src 文件夹 mark directory as sources root

71、Run configuration in IntelliJ result in “Cannot start compilation: the output path is not specified for module “xxx”. Specify the output path in Configure Project.

解决方法:In the default intellij options, “Make” was checked as “Before Launch”. Unchecking it fixed the issue.

72、UDFRegistration$$anonfun$register$26$$anonfun$apply$2 cannot be cast to scala.Function1

解决方法:聚合函数不能用 UDF,而应该定义 UDAF

73、SPARK SQL replacement for mysql GROUP_CONCAT aggregate function

解决方法:自定义 UDAF

74、在 intellij idea 的 maven 项目中,无法 New scala 文件

解决方法:pom.xml 加入 scala-tools 插件相关配置,下载并更新

75、Error:scala: Error: org.jetbrains.jps.incremental.scala.remote.ServerException

解决方法:修改 pom.xml 配置文件,把 scala 换到最新版本

76、HADOOP 磁盘满的各节点平衡

解决方法:运行指令 hdfs balancer -Threshold 3 或者 运行 start-balancer.sh 脚本格式:$Hadoop_home/bin/start-balancer.sh -threshold,参数 3 是比例参数,表示 3%,也就是平各个 DataNode 直接磁盘使用率偏差在 3%以内

77、经验:sparkSQL UDAF 中 update 函数的第二个参数 input: Row 对应的并非 DataFrame 的行,而是被 inputSchema 投影了的行

78、Error: No TypeTag available for String  sqlContext.udf.register()

解决方法:scala 版本不一致,统一所有 scala 版本

79、How to add a constant column in a Spark DataFrame?

解决方法:The second argument for DataFrame.withColumn should be a Column so you have to use a literal:   df.withColumn(‘new_column’, lit(10))

80、Error:scalac:Error:object VolatileDoubleRef does not have a member create

解决方法:scala 版本不一致,统一开发环境和系统的 scala 版本

81、java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty()Lscala/collection/immutable/HashSet

解决方法:统一 scala 和 spark 的 scala 版本

82、maven 项目打包去除不要的依赖,防止目标 jar 容量过大

解决方法:在中加入 provided 标明该依赖不放进目标 jar,并用 maven shaded 方式打包

83、maven 打包 scala 和 java 的混合项目

解决方法:使用指令 mvn clean scala:compile compile package

84、sparkSQL 的 udf 无法注册 UDAF 聚合函数

解决方法:把 UDAF 自定义类的 object 关键字改成 class 声明

85、经验:运行时删除 hadoop 数据目录会导致依赖 HDFS 的 JOB 失效

86、[IllegalArgumentException[Document contains at least one immense term in field=XXX

解决方法:在 ES 中创建索引时对长文本字段要分词

87、maven shade 打包资源文件没有打进去

解决方法:把 resources 文件夹放到 src/main/下面,与 scala 或 java 文件夹并排

88、经验:spark Graph 根据边集合构建图,顶点集合只是指定图中哪些顶点有效

89、ES 写 query 用到正则匹配时,Determinizing automaton would result in more than 10000 states.

解决方法:正则表达式的字符串太长,复杂度过高,正则匹配要精练,不要枚举式匹配

90、java.lang.StackOverflowError   at org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(TreeNode.scala:53)

解决方法:sql 语句的 where 条件过长,字符串栈溢出

91、org.apache.spark.shuffle.MetadataFetchFailedException:  Missing an output location for shuffle 0

解决方法:加大 executor 内存,减少 executor 个数,加大 executor 并发度

92、ExecutorLostFailure (executor 3 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 61.0 GB of 61 GB physical memory used

解决方法:移除 RDD 缓存操作,增加该 JOB 的 spark.storage.memoryFraction 系数值,增加该 job 的 spark.yarn.executor.memoryOverhead 值

93、EsRejectedExecutionException[rejected execution (queue capacity 1000) on org.elasticsearch.search.action.SearchServiceTransportAction

解决方法:减少 spark 并发数,降低对 ES 的并发读取

94、经验:单个 spark 任务的 excutor 核数不宜设置过高,否则会导致其他 JOB 延迟

95、经验:数据倾斜只发生在 shuffle 过程,可能触发 shuffle 操作的算子有:distinct  groupByKey  reduceByKey  aggregateByKey  join  cogroup  repartition 等

96、如何定位 spark 的数据倾斜

解决方法:在 Spark Web UI 看一下当前 stage 各个 task 分配的数据量以及执行时间,根据 stage 划分原理定位代码中 shuffle 类算子

97、如何解决 spark 数据倾斜

解决方法:1)过滤少数导致倾斜的 key(仅限于抛弃的 Key 对作业影响很小),2)提高 shuffle 操作并行度(提升效果有限),3)两阶段聚合(局部聚合+全局聚合),先对相同的 key 加前缀变成多个 key,局部 shuffle 后再去掉前缀,再次进行全局 shuffle(仅适用于聚合类的 shuffle 操作,效果明显,对于 join 类的 shuffle 操作无效),4)将 reduce join 转为 map join,将小表进行广播,对大表 map 操作,遍历小表数据(仅适用于大小表或 RDD 情况),5)使用随机前缀和扩容 RDD 进行 join,对其中一个 RDD 每条数据打上 n 以内的随机前缀,用 flatMap 算子对另一个 RDD 进行 n 倍扩容并扩容后的每条数据依次打上 0~n 的前缀,最后将两个改造 key 后的 RDD 进行 join(能大幅缓解 join 类型数据倾斜,需要消耗巨额内存)

98、经验:shuffle write 就是在一个 stage 结束计算之后,为了下一个 stage 可以执行 shuffle 类的算子,而将每个 task 处理的数据按 key 进行分类,将相同 key 都写入同一个磁盘文件中,而每一个磁盘文件都只属于下游 stage 的一个 task,在将数据写入磁盘之前,会先将数据写入内存缓存中,下一个 stage 的 task 有多少个,当前 stage 的每个 task 就要创建多少份磁盘文件。

99、java.util.regex.PatternSyntaxException: Dangling meta character ‘?’ near index 0

解决方法:元字符记得转义

100、spark 弹性资源分配

解决方法:配置 spark shuffle service,打开 spark.dynamicAllocation.enabled

101、经验:kafka 的 comsumer groupID 对于 spark direct streaming 无效

102、启动 hadoop yarn,发现只启动了 ResourceManager,没有启动 NodeManager

解决方法:yarn-site.xml 配置有问题,检查并规范各项配置

103、如何查看 hadoop 系统日志

解决方法:Hadoop 2.x 中 YARN 系统的服务日志包括 ResourceManager 日志和各个 NodeManager 日志,它们的日志位置如下:ResourceManager 日志存放位置是 Hadoop 安装目录下的 logs 目录下的 yarn-*-resourcemanager-*.log,NodeManager 日志存放位置是各个 NodeManager 节点上 hadoop 安装目录下的 logs 目录下的 yarn-*-nodemanager-*.log

104、经验:小于 128M 的小文件都会占据一个 128M 的 BLOCK,合并或者删除小文件节省磁盘空间

105、how to remove Non DFS Used

解决方法:1)清除 hadoop 数据目录中用户缓存文件:cd /data/hadoop/storage/tmp/nm-local-dir/usercache;du -h;rm -rf `find  -type f -size +10M`;  2)清理 Linux 文件系统中的垃圾数据

106、经验:Non DFS Used 指的是非 HDFS 的所有文件

107、linux profile 配置文件隔离

解决方法:cd /etc/profile.d;在这里新建相应配置脚本

108、The reference to entity “autoReconnect” must end with the ‘;’ delimiter

解决方法:把&替换成&

109、Service hiveserver not found

解决方法:Try to run bin/hive –service hiveserver2 instead of hive –service hiveserver for this version of apache hive

110、Failed to execute spark task, with exception ‘org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create spark client.)’

解决方法:不要预编译的 spark,重新编译 spark,并保证与 hive pom 中的版本一致

111、java.lang.NoSuchFieldError: SPARK_RPC_SERVER_ADDRESS  at org.apache.hive.spark.client.rpc.RpcConfiguration.(RpcConfiguration.java:45)

解决方法:hive spark 版本要匹配,同时必须是没有-phive 参数编译的 spark

112、javax.jdo.JDOFatalInternalException: Error creating transactional connection factory

解决方法:把 mysql connector 加入 hive 的 lib 中

113、org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create spark client  FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.spark.SparkTask

解决方法:原因有多种,去 hive.log 查看日志进一步定位问题

114、Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream

解决方法:编译 spark 用了 hadoop-provided 参数,导致缺少 hadoop 相关包

115、linux 输入错误命令 按删除键显示^H

解决方法:执行指令 stty erase ^H

116、经验:通过 hive 源文件 pom.xml 查看适配的 spark 版本,只要打版本保持一致就行,例如 spark1.6.0 和 1.6.2 都能匹配

117、经验:打开 Hive 命令行客户端,观察输出日志是否有打印“SLF4J: Found binding in [jar:file:/work/poa/hive-2.1.0-bin/lib/spark-assembly-1.6.2-hadoop2.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]”来判断 hive 有没有绑定 spark

118、启动 yarn,发现只启动了部分 Nodemanager

解决方法:未启动的节点缺少 yarn 相关包,要保持所有节点 jar 包一致

119、Error: Could not find or load main class org.apache.hive.beeline.BeeLine

解决方法:重新编译 Hive,并带上参数-Phive-thriftserver

120、经验:编译 spark,hive on spark 就不要加-Phive 参数,若需 sparkSQL 支持 hive 语法则要加-Phive 参数

121、User class threw exception: org.apache.spark.sql.AnalysisException: path hdfs://XXXXXX already exists.;

解决方法:df.write.format(“parquet”).mode(“append”).save(“path.parquet”)

122、check the manual that corresponds to your MySQL server version for the right syntax to use near ‘OPTION SQL_SELECT_LIMIT=DEFAULT’ at line 1

解决方法:用新版 mysql-connector

123、org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate

解决方法:vim core-site.xml,hadoop.proxyuser.root.hosts,value = *,hadoop.proxyuser.root.groups,value = *,restart yarn

124、java.lang.NoSuchMethodError: org.apache.parquet.schema.Types$MessageTypeBuilder.addFields([Lorg/apache/parquet/schema/Type;)Lorg/apache/parquet/schema/Types$BaseGroupBuilder;

解决方法:版本冲突所致,统一 hive 和 spark 中 parquet 组件版本

125、经验:可以通过 hive-site.xml 修改 spark.executor.instances、spark.executor.cores、spark.executor.memory 等配置来优化 hive on spark 执行性能,不过最好配成动态资源分配。

126、WARN SparkContext: Dynamic Allocation and num executors both set, thus dynamic allocation disabled.

解决方法:如果要使用动态资源分配,就不要设置执行器个数

127、Invalid configuration property node.environment: is malformed (for class io.airlift.node.NodeConfig.environment)

解决方法:the node.environment property (in the node.properties file) is set but fails to match the following regular expression: [a-z0-9][_a-z0-9]*. 重新规范命名

128、com.facebook.presto.server.PrestoServerNo factory for connector hive-XXXXXX

解决方法:在 hive.properties 中 connector.name 写错了,应该为指定的版本,以便于 presto 使用对应的适配器,修改为:connector.name=hive-hadoop2

129、org.apache.spark.SparkException: Task failed while writing rows  Caused by: org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest: null

解决方法:ES 负载过高,修复 ES

130、经验:如果 maven 下载很慢,很可能是被天朝的 GFW 墙了,可以在 maven 安装目录的 setting.conf 配置文件 mirrors 标签下加入国内镜像抵制**党的网络封锁,例如:

nexus-aliyun

*

Nexus aliyun

http://maven.aliyun.com/nexus/content/groups/public

131、RROR ApplicationMaster: Uncaught exception: java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

解决方法:pom.xml 文件中标签下加入

META-INF/*.SF

META-INF/*.DSA

META-INF/*.RSA

132、scala.MatchError: Buffer(10.113.80.29, None) (of class scala.collection.convert.Wrappers$JListWrapper)

解决方法:清除 ES 中跟 scala 数据类型不兼容的脏数据

133、HDFS 误删文件如何恢复解决方法:core-site 文件中加入

fs.trash.interval

2880

HDFS 垃圾箱设置,可以恢复误删除,配置的值为分钟数,0 为禁用

恢复文件执行 hdfs dfs -mv  /user/root/.Trash/Current/误删文件    /原路径

134、改了 linux 定时脚本里边部分任务顺序,导致有些任务未执行,而有些重复执行

解决方法:Linux 脚本修改后实时生效,务必在脚本全部执行完再修改,以免产生副作用

135、经验:spark 两个分区方法 coalesce 和 repartition,前者窄依赖,分区后数据不均匀,后者宽依赖,引发 shuffle 操作,分区后数据均匀

136、org.apache.spark.SparkException: Task failed while writing rows   scala.MatchError: Buffer(10.113.80.29, None) (of class scala.collection.convert.Wrappers$JListWrapper)

解决方法:ES 数据在 sparksql 类型转化时不兼容,可通过 EsSpark.esJsonRDD 以字符串形式取 ES 数据,再把 rdd 转换成 dataframe

137、Container exited with a non-zero exit code 143  Killed by external signal

解决方法:分配的资源不够,加大内存或者调整代码,尽量避免类似 JsonObject 这样的大对象过度消耗内存,或者 Include below properties in yarn-site.xml and restart VM,

yarn.nodemanager.vmem-check-enabled

false

Whether virtual memory limits will be enforced for container

yarn.nodemanager.vmem-pmem-ratio

4

Ratio between virtual memory to physical memory when setting memory limits for containers

138、对已有 jar 手动生成 maven 依赖

解决方法:mvn install:install-file -Dfile=spark-assembly-1.6.2-hadoop2.6.0.jar -DgroupId=org.apache.repack -DartifactId=spark-assembly-1.6.2-hadoop2.6.0 -Dversion=2.6 -Dpackaging=jar

139、FAILED: SemanticException [Error 10006]: Line 1:122 Partition not found ”2016-08-01”

解决方法:hive 版本太新,hive 自身 bug,把 hive 版本从 2.1.0 降到 1.2.1

140、ParseException line 1:17 mismatched input ‘hdfs’ expecting StringLiteral near ‘inpath’ in load statement

解决方法:去掉以 hdfs 开头的 IP 端口号前缀,直接写 HDFS 中的绝对路径,并用单引号括起来

141、[ERROR] Terminal initialization failed; falling back to unsupported  java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected 解决方案:export HADOOP_USER_CLASSPATH_FIRST=true

142、crontab 中启动的 shell 脚本不能正常运行,但是使用手动执行没有问题

解决方法:在脚本第一行写上 source /etc/profile,因为 cront 进程不会自动加载用户目录下的.profile 文件

143、SparkListenerBus has already stopped! Dropping event SparkListenerStageCompleted

解决方法:集群资源不够,确保真实剩余内存大于 spark job 申请的内存

144、PrestoException: ROW comparison not supported for fields with null elements

解决方法:把 !=null 换成 is not null

145、启动 presto 服务器,部分节点启动不成功

解决方法:JVM 所分配的内存,必须小于真实剩余内存

146、经验:presto 进程一旦启动,JVM server 会一直占用内存

147、Error injecting constructor, java.lang.IllegalArgumentException: query.max-memory-per-node set to 20GB, but only 10213706957B of useable heap available

解决方法:Presto will claim 0.40 * max heap size for the system pool, so your query.max-memory-per-node must not exceed this. You can increase the heap or decrease query.max-memory-per-node.

148、failed: Encountered too many errors talking to a worker node. The node may have crashed or be under too much load. failed java.util.concurrent.CancellationException: Task was cancelled

解决方法:such exceptions caused by timeout limits,延长等待时间,在 work 节点 config 配置中 set exchange.http-client.request-timeout=50s

149、大数据 ETL 可视化有哪些主流方案

解决方法:可以考虑的技术栈有 ELK(elasticsearch+logstash+kibana)或者 HPA(hive+presto+airpal)

150、经验:presto 集群没必要采用 on yarn 模式,因为 hadoop 依赖 HDFS,如果部分机器磁盘很小,HADOOP 会很尴尬,而 presto 是纯内存计算,不依赖磁盘,独立安装可以跨越多个集群,可以说有内存的地方就可以有 presto


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明大数据常见错误解决方案
喜欢 (0)
admin
关于作者:

您必须 登录 才能发表评论!