大数据平台hbase,phoenix,spark搭建和研发问题和解决方式汇总

#Q
Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.tracing.SpanReceiverHost.get
$A
2.7.3

#Q
Caused by: java.net.UnknownHostException: mycluster
$A 修改host文件 118.178.104.96 mycluster

#flume 两种记日志方式,扫描文件夹和log4j写netcat端口,netcat容易关闭,第二 flume一旦停止再重启,日志写入失败,改用文件夹监听,不同字符串发送到不同topic
#hbase连接不上, IP映射,60020端口telnet下。 hbase的hbase-site.xml配置正确和phoeix的映射要复制到phoenix上去
#spring-data管理HbaseTemplate connection 坑之源码分析 每一个hbasetemplate重复建立connection
#hadoop version修改,重启hadoop,格式化
#IDEA打包外部引用类 插件
#phoenix的thin-clientjar包打包了其他很多hadoop相关jar包,冲突
#KAFKA ip顺序不对,导致连接不上
#hadoop多版本jar包冲突,找不到类
#springboot 解决kafka多个topic监听,优雅
#springboot 默认连接池采用hakip,新版本对phonix不支持,报SQLfezeNOTSUPPORT,需改用自定义配置连接池
#springboot
@phoenix做好和namespace的映射,修改hbase.xml做二级索引

#mybatis 生成的field要加双引号,mybatis生成的字段强制用数据表一致,不用驼峰原则

#phoenix二级索引更新必须通过phoenix CLIENT API ,hbase更新的话,不会同步到phoenix索引,在某些情况下,phoenix client操作的数据也不会更新索引
#hbase 1.4版本客户端测试要禁用断言。
#hbase:长久连接不上,最后报错:Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.util.ByteStringer
把3.5的替换为2.5的(protobuf-java-2.5.0.jar) Doing a drop replacement of protobuf-java-2.5.0.jar makes the hbase pipelines to run fine.

#HBASE连接不上
port:regionserver绑定的端口,默认是60020;,没有 开启的原因
#phoenix连不上
Remote driver error: RuntimeException:
java.sql.SQLException: org.apache.hadoop.hbase.client.RetriesExhaustedException:
Failed after attempts=36, exceptions:
#A
hadoop.proxyuser.HTTP.groups=*
hadoop.proxyuser.HTTP.hosts=*
jar uf phoenix-4.7.0.2.5.3.0-37-client.jar hbase-site.xml
#phoenix 4.8 bug order by limit offset 查不出数据来
#A:select * from “test” order by col2 limit 1 offset 1;
https://issues.apache.org/jira/browse/PHOENIX-997

#phoenix 4.9 连接时报错,SYSTEM:CATALOG is found but client does not have phoenix.schema.isNamespaceMappingEnabled enabled

hbase.phoenix.datasource.connectionProperties=phoenix.schema.isNamespaceMappingEnabled=true

#phoneix Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.isNamespaceMappingEnabled enabled,Cannot initiate connection as SYSTEM:CATALOG is found but client does not have phoenix.schema.isNamespaceMappingEnabled enable
#多数据源时 pring+mybatis多数据源,报Invalid bound statement的问题
A: 因为将dao和mybatis的映射文件都放在了嵌套的目录里,所以在spring扫描的时候,记录了首次扫描到dao的方法,然后使用首次扫描到dao的方法,调用其他路径的映射文件时,就会提示无法找到映射文件的方法。 只需要将dao和mapping的映射文档,放在不同目录下,不可嵌套或者同级目录。就可以找到映射关系了

#PHOENIX mybatis 长久等待连不上数据库,查询不到数据,protobuf
#A:protobuf从2.5升级到3.5

#protobuf版本的包冲突问题
修改2.4.1中class的名字(通过修改package名)并重新打jar包,然后修改canal中引用到protobuf的地方并重新打jar包
mvn install:install-file -Dfile=D:\projects\code\dev\protobuf2.5\target\protobuf25-java-2.5.0.jar -DgroupId=com.google.protobuf25 -DartifactId=protobuf25-java -Dversion=2.5.0 -Dpackaging=jar

#HBASE API org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.util.ByteStringer
#A:protobuf从3.5降级到2.5
#spark phoenix
1.query 是table
2.jar包的META-INF路径是 main\resources否则打包不进去。
3.删除META-INF重新打包jar包,重新包含所有依赖包
4. phoenix jdbc maven provide去掉,否则不会打包进来。
5.spark 是jdbc的API不可用thin driver
6.检查meta-inf classpath是否包含所有的依赖jar

#mavn install jar
mvn install:install-file -Dfile=spark-redis-0.3.2.jar -DgroupId=RedisLabs -DartifactId=spark-redis -Dversion=0.3.2 -Dpackaging=jar
#Exception in thread “main” java.net.ConnectException: Call From Trade-Test-Spark001/10.25.172.171 to Trade-Test-Spark001:9000 failed on connection exception: java.net.ConnectException: Connection refused;
#A: hadoop namenode 启动 start-dfs.sh

#spark 下的GSON.jar版本冲突,已替换spark的jars下的jar为高版本的。其他服务器也要替换TODO

#KAFKA method:org.springframework.kafka.listener.KafkaMessageListenerContainer$1.onFailure(KafkaMessageListenerContainer.java:273)
Error while stopping the container:
java.lang.NoClassDefFoundError: com/google/protobuf/GeneratedMessageV3

#HBASE REGION SERVER LOG
Unable to return groups for user Administrator
PartialGroupNameException The user name ‘Administrator’ is not found. id: Administrator: no such user

#org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: java.net.ConnectException: Connection refused: no further information
查看端口映射是否正确

#phoenix drop index exception

#phoenix索引和hbase数据的错乱关系,如果删除了表,但是没有删除相应的索引表,索引表里有数据,查询的时候走索引查询,导致查询不一致。
更新插入数据的时候不走phoneix虽然查出数据,但是是索引里的数据。
#phoneix4.9-1.2 更新索引 notsuchmethod error。需换回4.8, 4.8的limit bug问题,目前客户端仍用4.9暂时没发现问题。
#phoenix thin query server driver,表结构变化后不识别新的表结构。fat driver没问题。
#flume同时发送两条消息到kafka
原因是同时起了两个flume进程。
#spark在集群里运行错误
需要分配内存到节点。
#spark-env.sh不能一样,否则报错

#iptable 的规则只保存在内存中,需要调用service iptable save保存在文件里,iptable service需要另外安装。
#spark在standalone集群模式下需要把jar包放在HDFS下,否则找不到jar包。
#spark运行jar application,logback冲突,需要在springboot里禁用logback。

#spark conf下需要放hbase-site.xml 来解决 phoenix.schema.isNamespaceMappingEnabled
#spark-phoenix源代码把saveashadoop的文件夹写死了。获取不到环境变量值,另外把取column名转大写的方法去掉。否则找不到列

#phoenix-query-client 会引入acativa,顺便引入地版本的fastxml javasonException与spark-scala的冲突, 注释掉POM不引入phoenix-client

#aused by: org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator
guava17开始,constructors发生变化,如果确认当前项目只有一个guava包,需确认版本问题。
测试,hbase1.2.1:guava12-16,运行无误;guava17开始,同样出现标题异常,已强制pom改成14版本的guava— 待观察TODO

#Spark-sql 2.2.0的spark只有scala2.1.0的版本 所以scala改成2.1.7
#Caused by: java.io.NotSerializableException: org.springframework.data.redis.core.RedisTemplate
spark里的函数不能包含spring依赖
SparkContext和SparkSession 都不能作为函数的参数,函数的参数传递的时候会被序列化,而这两个参数都不能序列化
The functions and any classes containing the functions that run on the executors should not have any dependency on Spring Boot. See if you can find the reference by inspection, or maybe the serialisation stack trace will help you. Declaring the functions run on the executors as static methods in dedicated classes is a good way to avoid this issue.

#crotab 任务执行不了

  1. 首先 输出到日志>>
    2.spark-class 的JAVA_HOME不是环境变量配置的,而是在spark-env.sh里配置的。

你可能感兴趣的:(大数据平台hbase,phoenix,spark搭建和研发问题和解决方式汇总)