hadoop要点(四)

来源:互联网 发布:网络交易管理办法解读 编辑:程序博客网 时间:2024/06/09 14:38
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.<clinit>(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.PrestoServer No 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标签下加入国内镜像抵制**党的网络封锁,例如:
<mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>

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

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

<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>

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

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

133、HDFS误删文件如何恢复 解决方法:core-site文件中加入
<property>
     <name>fs.trash.interval</name>
     <value>2880</value>
     <description>HDFS垃圾箱设置,可以恢复误删除,配置的值为分钟数,0为禁用</description>
</property>
恢复文件执行 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,

<property>
   <name>yarn.nodemanager.vmem-check-enabled</name>
   <value>false</value>
   <description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
   <name>yarn.nodemanager.vmem-pmem-ratio</name>
   <value>4</value>
   <description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>

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
0 0