=========sqlserver中文显示问号:
ALTER DATABASE 你要更改的数据库的名字 COLLATE Chinese_PRC_CI_AS;
执行失败就重启数据库服务再执行

=========hive字段注释和表注释中文显示问号
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

=========hdfs web显示standby但切换不回来
lsof -i:8020
cd /usr/local/hadoop-3.1.3
sbin/stop-all.sh
lsof -i:8020
kill -9 剩余进程
sbin/start-all.sh
lsof -i:8020
8个正常
查看nn1状态,若还是为standby,则切换
bin/hdfs haadmin -transitionToStandby --forcemanual nn2
注意大写Y
bin/hdfs haadmin -transitionToActive --forcemanual nn1
最后结果:
bin/hdfs haadmin -getServiceState nn1
active
bin/hdfs haadmin -getServiceState nn2
standby

=========dolphin启动报错无可用的master节点
重启dolphin
cd /usr/local/dolphinscheduler-3.1.7/bin/
./stop-all.sh
./start-all.sh

=========hive执行需要计算的sql卡住set mapreduce.job.reduces=
访问8088报错There is no active RM right now. HA Zookeeper Connection State: TERMINATED
1.网上有说设置参数set hive.exec.mode.local.auto=true;
但是执行报错return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask (state=08S01,code=2)
2.!!!!!最终解决方法
1)检查每个节点zookeeper状态./zkServer.sh status
./zkServer.sh stop
./zkServer.sh start
2)jps查看,ResourceManager和NodeManager是否存在
关闭ResourceManager:yarn --daemon stop resourcemanager
再次jps查看,发现resourceManager依然存在。使用kill -9 杀掉,再启动yarn --daemon start resourcemanager
再去访问8088正常。执行sql正常。
可能原因:yarn resourceManager启动状态不正常。

=========doris安装 using ‘ulimit -n 65536’.
[root@localhost bin]# ./start_be.sh --daemon
Please set the maximum number of open file descriptors to be 65536 using ‘ulimit -n 65536’.
[root@localhost bin]# ulimit -n 65536

  • soft nproc 204800
  • hard nproc 204800
  • soft nofile 204800
  • hard nofile 204800

======== zookeeper启动
chown -R dolphinxx /usr/local/zookeeper
cd /usr/local/zookeeper/bin
./zkServer.sh start

========doriswriter no route
开放端口 8030 8040 9030

=======kingbase datax连不上
datax的数据库驱动为8.2.0,需要替换为8.6.0

======Failed to flush data to Doris
1.换行符问题。
2.不为空列有空值

=== datax往hdfs写数== Class org.apache.hadoop.hdfs.server.namenode.ha.AdaptiveFailoverProxyProvider not found===Couldn’t create proxy provider null
dfs配的不对,或没在hosts文件映射或者改成用ip:端口

=datax连接华为hive,jdbc=
Unable to read HiveServer2 configs from ZooKeeper

  1. 没加ZooKeeper依赖
  2. 没把配置文件放resources里

===数据源连接inceptor报bigdata2找不到host
配置服务器bigdata2的hosts映射

华为keberos认证kafka连接报错=======
Failed authentication with 主机名/ip (An error
: (java.security.PrivilegedActionException: javax.security.sasl.SaslException: GSS initiate failed [Cause
d by GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database
(7) - LOOKING_UP_SERVER)]) occurred when evaluating SASL token received from the Kafka Broker. This may b
e caused by Java’s being unable to resolve the Kafka Broker’s hostname correctly. You may want to try to
adding ‘-Dsun.net.spi.nameservice.provider.1=dns,sun’ to your client’s JVMFLAGS environment. Users must c
onfigure FQDN of kafka brokers when authenticating using SASL and socketChannel.socket().getInetAddress( ).getHostName() must match the hostname in principal/hostname@realm Kafka Client will go to AUTHENTICA
TION_FAILED state.)
需要使用华为的kafka包,若引用了还是不管用,检查是不是没有排除普通的kafka包,例如kafka-clients-2.3.1和kafka-clients-2.8.1-h0.cbu.mrs.321.r13不能同时存在。
还有kafka-streams-examples、kafka-streams、kafka_2.12

== inceptor和开源hive和华为hive一起引入项目报错NoClassDefFoundError: org/apache/hive/service/cli/thrift/TProtocolVersion
inceptor用maven引入。华为hive依赖用scope方式引入!!绝不能用maven下载依赖。否则会覆盖开源hive的版本。

== hdfswriter datax 报错Failed on local exception: java.io.IOException: java.lang.IllegalArgumentExceptio
n: Failed to specify server’s Kerberos principal name; Host Details :xx
1.配置kerberosPrincipal需要写全名 2.hadoopConfig里添加dfs.datanode.kerberos.principal和dfs.namenode.kerberos.principal,这两个参数都在hdfs-site.xml里找。
“kerberosPrincipal”: “rd_hdfs@HADOOP.COM”,
“hadoopConfig”: {
“hadoop.security.authentication”: “Kerberos”,
“hadoop.rpc.protection”: “authentication”,
“dfs.namenode.kerberos.principal”: “hdfs/hadoop.hadoop.com@HADOOP.COM”,
“dfs.namenode.rpc-address.hacluster.41”: “xx01:25000”,
“dfs.client.failover.proxy.provider.hacluster”: “org.apache.hadoop.hdfs.server.namenode.ha.AdaptiveFailoverProxyProvider”,
“dfs.ha.namenodes.hacluster”: “40,41”,
“dfs.namenode.rpc-address.hacluster.40”: “xx02:25000”,
“dfs.nameservices”: “hacluster,nsfed”,
“dfs.datanode.kerberos.principal”: “hdfs/hadoop.hadoop.com@HADOOP.COM”
},

== hdfswriter datax 报错找不到org.apache.orc.OrcFil e$WriterOptions.useUTCTimestamp(Z)Lorg/apache/orc/OrcFile
项目是java调用datax。原因是java里引入了hive-exec依赖。和datax里的冲突了,导致有两个org/apache/orc/OrcFile,不知道用哪个。注释掉项目里的hive-exec依赖。

====seatunnel用jdbc插件同步支持的数据源时,报错JDBC-Class not found
已经按文档提示将驱动放入SEATNUNNELHOME/lib/解决:还要将驱动放入SEATNUNNEL_HOME/lib/ 解决:还要将驱动放入SEATNUNNELHOME/lib/解决:还要将驱动放入SEATNUNNEL_HOME/plugins/jdbc/lib
没文件夹就自己建上
集群启动,每个节点都要加上。只某个节点加还是偶尔会报这个错误,且报其他错误时还导致日志不详细

=============seatunnel同步数据到oracle ORA-00947: not enough values
插入的数据列数不够

==datax ftpreader总是提示路径不存在或无权限,但实际上文件存在且有权限。原因是链接模式,应为被动PASV
=========使用调度平台类提示 va…,原因是类型不兼容,用字符串或map,不再使用调度平台的实体类
===========ftp有文件但datax读不到,ftp要配成被动模式

=========flinksql master 1 exceeds the maximum number of virtual cores 0 available in the Yarn
yarn application进程太多了拒绝连接
解决:进入yarn application管理页面,找到正在进行的,不用的进程,复制applicationId
进入集群机器 yarn application -kill applicationId

====flinksql One or more required options are missing.
flink sql中建表缺少连接属性,如:schema-name、database-name

======flinksql postgres-cdc NoSuchFieldError: SCAN_INCREMENTAL_SNAPSHOT_BACKFILL_SKIP
换flink-sql-connector-postgres-cdc-3.0.1换成2.4.2.jar
不不不不要加flink-connector-postgres-cdc-2.4.2.jar

======Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/Versioned
ClassNotFoundException: com.fasterxml.jackson.annotation.JsonView
分别加jackson-databind-2.17.1.jar、jackson-core-2.17.1.jar、jackson-annotations-2.17.1.jar

NoClassDefFoundError:org/apache/kafka/connect/data/Schema
加 org.apache.kafka connect-api
org/apache/kafka/common/KafkaException
加kafka-clients-3.5.1.jar

========flinksql postgres PSQLException: ERROR: logical decoding requires wal_level >= logical
编辑postgresql配置文件postgresql.conf
修改修改wal_level = logical

====flinksql postgres Caused by: org.postgresql.util.PSQLException: ERROR: could not access file “decoderbufs”: No such file or directory
原因postgres-cdc没有添加最后一句: ‘debezium.plugin.name’=‘pgoutput’
debezium.plugin.name=‘pgoutput’ 是用来指定 Debezium 的插件为 pgoutput。
在 Debezium 中,插件是用于实现特定数据库连接和数据捕获功能的组件。pgoutput 插件是针对 PostgreSQL 数据库的输出插件,用于将捕获到的数据库更改输出到外部系统或应用程序。
通过指定 debezium.plugin.name=‘pgoutput’,Debezium 将加载 pgoutput 插件,并使用它来连接到 PostgreSQL 数据库,捕获数据变化,并将其输出到指定的目标。

===== Caused by: java.lang.NoSuchMethodError: io.debezium.pipeline.DataChangeEvent.(Lorg/apache/kafka/connect/source/SourceRecord;)V
不不不不不不要加debezium-core-1.9.7.Final.jar

=== Caused by: java.lang.NoSuchMethodError: io.debezium.config.Field.withWidth(Lcom/ververica/cdc/connectors/shaded/org/apache/kafka/common/config/ConfigDef$Width;)Lio/debezium/config/Field;
不不不不不要加debezium-connector-postgres-1.9.7.Final.jar

==========海豚调度dolphinscheduler,任务进程文件夹下某些资源文件无故消失
在代码中没有任何删除操作的情况下,文件突然消失,考虑linux系统的自动清理操作导致的,因为任务进程文件夹位于/tmp下。
根据发行版本不同,linux中/tmp目录的定期清理通常是10天。
查找sudo find /usr/lib/tmpfiles.d/ /etc/tmpfiles.d/ -name ‘tmp.conf’
编辑sudo vim /usr/lib/tmpfiles.d/tmp.conf
在tmp.conf文件中,你会看到类似以下的行,用于定义/tmp目录的清理策略:
d /tmp 1777 root root 10d
这表示/tmp目录会在10天后被清理。你可以将10d更改为你想要的天数,例如30d表示30天后清理。

  1. 如果你想要完全禁用自动清理,你可以将整行注释掉(在行首添加#)
  2. 如你不想让系统自动清理 /tmp内的dolphinscheduler目录,那么增加下面这条内容到配置文件中即可:
    x /tmp/dolphinscheduler

在修改了tmp.conf文件后,你需要重新加载systemd的配置以使更改生效:sudo systemctl daemon-reload

====seatunnel同步mysql的tinyint到postgresql会报错
原因是seatunnel将tinyint读成了true
看文档中mysql source的tinyint对应为BYTE

==========执行hivesql报错(报错在yarn-application的syslog里查看)
Class org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe not found
解决方法:
将下面的配置语句,加在配置文件: HIVE_INSTALL/conf/Hive-site.xml中,value中hive-contrib-*.jar的路径为你机器上实际的放置,在$HIVE_INSTALL/lib目录下寻找。

hive.aux.jars.path
file:///home/hive/lib/hive-contrib-x.x.x.jar

重启hive和hiveserver2

==== seatunnel2.3.4同步到hive===
首先:dfs的nameservices需要在每一个seatunnel集群节点配置host映射

注意2.3.4用的是hive2.3.9,以下jar只能复制2.3.9的,已测试3.1.2的版本不行,会报错Exception in thread “main” java.lang.NoSuchMethodError: org.apache.hadoop.hive.metastore.HiveMetaStoreClient.(Lorg/apache/hadoop/hive/conf/HiveConf;)V

到hive lib下找以下jar复制到seatunnel的lib 和 plugins/jdbc/lib!!!!!
1.java.lang.NoClassDefFoundError:org/apache/hadoop/hive/metastore/api/MetaException
hive-metastore-2.3.9-cdh6.3.2.jar # cdh版本的记得将这个也复制上
hive-metastore-2.3.9.jar

2.java.lang.NoClassDefFoundError: org/apache/thrift/TBase
java.lang.NoClassDefFoundError:com/facebook/fb303/FacebookService$Iface
下载地址:https://repo1.maven.org/maven2/org/apache/thrift/libfb303/0.9.3/libfb303-0.9.3.jar

3.java.lang.NoClassDefFoundError:org/apache/hadoop/hive/conf/HiveConf
hive-common-2.3.9-cdh6.3.2.jar #cdh版本的记得复制过来
hive-common-2.3.9.jar
hive-exec-2.3.9-cdh6.3.2.jar #cdh版本的记得复制过来
hive-exec-2.3.9.jar

4.java.lang.OutOfMemoryError: Java heap space
去SeaTunnel的config里面增大对应值,vi jvm_client_options
#JVM Heap
-Xms2g
-Xmx2g

==============hadoop运行一段时间后用stop-all关不掉
修改 hadoop-env.sh 文件
export HADOOP_PID_DIR=/usr/software/hadoop-2.7.2/tmp
这里的文件名和路径可以自由设置。
在重启集群就好了

===============host162的namenode服务起不来,9870/explorer.html#/报错状态都在standby
无法强制恢复,且重新格式化后启动后2个节点都是standby状态
1.确认所有 JournalNode 已启动且端口 8485 可访问
#在每个 JournalNode 节点执行:
jps | grep JournalNode # 应输出进程 ID
netstat -tuln | grep 8485 # 检查端口监听
#测试端口连通性(从 NameNode 执行)
telnet host161 8485

2.检查每个节点 ZooKeeper 集群状态
jps | grep QuorumPeerMain
没有进程则重新启动(每个节点)/usr/local/zookeeper/bin/zkServer.sh restart
如果 ZooKeeper 中残留旧数据启动不了,需重新格式化:
hdfs zkfc -formatZK -force

3.在 ​所有 NameNode 节点 上启动 ZKFC
hadoop-daemon.sh start zkfc
jps | grep DFSZKFailoverController # 应输出进程 ID

4.再查看节点状态
bin/hdfs haadmin -getServiceState nn1
bin/hdfs haadmin -getServiceState nn2
可以看到有个节点已经是active状态
如果自动故障转移未生效,手动指定 Active 节点:hdfs haadmin -transitionToActive nn1 --forcemanual

=Dolphin Scheduler 尝试上传文件到 HDFS 时失败(日志显示 0 datanode(s) running)===
​DataNode 服务未启动:HDFS 的 DataNode 进程未运行。每个节点执行hadoop-daemon.sh start datanode
​网络/防火墙问题:DataNode 与 NameNode 之间通信被阻止。
​存储路径权限不足:Dolphin Scheduler 用户无权写入目标目录。
创建目录并赋权
hdfs dfs -mkdir -p /root/resources
hdfs dfs -chmod 777 /root/resources # 或指定用户/组
hdfs dfs -chown admin:supergroup /root/resources

======写入hdfs无权限
Permission denied: user=root, access=WRITE, inode=“/user/hive/warehouse/test.db”:dolphinscheduler:supergroup:drwxr-xr-x
解决:
hdfs dfs -ls /user/hive/warehouse/test.db
hdfs dfs -chmod -R 777 /user/hive/warehouse/test.db
hdfs dfs -chmod -R 777 /user/hive/warehouse/ods_buf.db

==========flink-cdc3.2.1中oracle-cdc-运行报错java.lang.NoSuchMethodError: io.debezium.pipeline.DataChangeEvent.(Lorg/apache/kafka/connect/source/SourceRecord;)V
原因是缺少kafka的connect-api.jar
但是在flink/lib下加入了connect-api.jar也不管用
考虑编译时添加依赖,修改flink-cdc-connect/flink-cdc-source-connectors/flink-connector-oracle-cdc/pom.xml
排除debezium中的connect-api,改为显示引入

    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-connector-debezium</artifactId>
        <version>${project.version}</version>
        <exclusions>
            <exclusion>
                <artifactId>kafka-log4j-appender</artifactId>
                <groupId>org.apache.kafka</groupId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.kafka</groupId>
                <artifactId>connect-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>connect-api</artifactId>
        <version>3.2.0</version>
    </dependency>

打包上传flink-sql-connector-oracle-cdc-3.2.1.jar到flink/lib即可

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐