-
Flink读写Clickhouse场景1: flink读取kafka数据写入clickhouse前提条件:已经配置好flink客户端准备kafka样例数据aaa,18,2023-4-14 bbb,20,2023-4-15 ccc,21,2023-4-16 ddd,22,2023-4-17确认连接clickhouse集群说明:连接的是ck的balancer实例,该实例会做负载,分发写入、读写任务。 HTTP端口是jdbc接口对应端口,TCP端口是后台客户端命令对应端口。打开样例工程写入CK需要用到ClickHouse_Sink以及WriteIntoCK修改样例代码,写入CK需要修改代码里面的ck链接方式注意:默认的ck集群名字为default_cluster。本示例使用的database是testdb,名字为flinkck。如果pom文件依赖导入有问题,可以使用手动打包方式:从安装好的客户端手动导入依赖包,如下图:参考如下图打包将打好的包放入后台路径比如/opt/flinkck使用如下命令启动flink集群./bin/yarn-session.sh -jm 1024 -tm 1024 -t test/ -d使用如下命令提交读取kafka写入ck的命令bin/flink run --class com.huawei.bigdata.flink.examples.WriteIntoCK /opt/flinkck/flinkckdemo.jar --topic writeck --bootstrap.servers xxx.xx.x.xx:21005准备kafka, topic名字为writeck, 使用如下命令生产数据bin/kafka-console-producer.sh --broker-list xxx.xx.x.xx:21005 --topic writeck --producer.config config/producer21005.propertiesflink任务:使用如下命令去ck检查 (第一次运行会自动建表)clickhouse client --host xxx.xx.x.xxx --user sandbox --password --port 21425 --secure场景2:读取ck数据打印完成场景1,或者在ck创建好场景1的ck数据打开样例工程,并修改ReadCK的clickhouse连接部分参考场景1的部分完成打包,并上传到后台/opt/flinkck路径使用如下命令启动flink集群./bin/yarn-session.sh -jm 1024 -tm 1024 -t test/ -d使用如下命令提交读取命令bin/flink run --class com.huawei.bigdata.flink.examples.ReadCK /opt/flinkck/flinkckdemo.jar打开任务检查打印内容
-
背景:由于有些场景在启用Ranger情况下,客户在分配权限时候对高权限有特别要求,尽可能给用户设置低权限,无法在ranger中设置用户为 is Role admin权限(hive管理员权限)测试版本:MRS-3.1.2版本(hive启用ranger鉴权)操作流程:1、在Ranger中配置用户具有udf创建查看权限以rangeradmin用户登录Ranger——>点击hive添加一个新的策略创建策略(注意步骤2可以选择指定库,步骤3中默认是table要选成udf,值可以定义为*)(步骤4选择添加的用户,步骤5中至少要给create权限,drop权限为删除udf函数权限可选是否给)2、在客户端安装节点,把UDF函数jar包打包(如AddDoublesUDF.jar),并上传到HDFS指定目录下(例如“/user/hive_examples_jars”)。创建函数的用户与使用函数的用户都需要具有该文件的可读权限。示例语句:hdfs dfs -put ./hive_examples_jars /user/hive_examples_jarshdfs dfs -chmod 777 /user/hive_examples_jars3、安全模式,需要使用具有udf create管理权限的用户登录beeline客户端,执行如下命令:kinit Hive业务用户beeline4、在Hive Server中定义该函数,以下语句用于创建永久函数:(其中addDoubles是该函数的别名,用于SELECT查询中使用)CREATE FUNCTION addDoubles AS 'com.huawei.bigdata.hive.example.udf.AddDoublesUDF' using jar 'hdfs://hacluster/user/hive_examples_jars/AddDoublesUDF.jar';以下语句用于创建临时函数:CREATE TEMPORARY FUNCTION addDoubles AS 'com.huawei.bigdata.hive.example.udf.AddDoublesUDF' using jar 'hdfs://hacluster/user/hive_examples_jars/AddDoublesUDF.jar';•addDoubles是该函数的别名,用于SELECT查询中使用。•关键字TEMPORARY说明该函数只在当前这个Hive Server的会话过程中定义使用。5、在Hive Server中使用该函数,执行SQL语句:SELECT addDoubles(1,2,3);6、在Hive Server中删除该函数,执行SQL语句:DROP FUNCTION addDoubles;
-
Flink读取Kafka Topic消费内容写入DWS一、配置客户端进入集群客户端安装目录,例如“/opt/Bigdata/client/”,导入环境变量。cd /opt/Bigdata/client/ source bigdata_env执行kinit命令,输入用户密码进行用户认证。 kinit flinkuser进入“/opt”目录解压keytab文件。cd /opt/ tar -xvf xx_keytab.tar修改flink-conf.yaml文件。cd /opt/Bigdata/client/Flink/flink/conf vi flink-conf.yaml 修改参数如下: security.kerberos.login.keytab: /opt/user.keytab //修改keytab文件位置 security.kerberos.login.principal: flinkuser //修改用户名安全模式下需要将客户端安装节点的业务ip以及Manager的浮动ip追加到“/opt/Bigdata/client/Flink/flink/conf/flink-conf.yaml”文件中的jobmanager.web.allow-access-address配置项中,ip之间使用英文逗号分隔。生成证书文件。cd /opt/Bigdata/client/Flink/flink ./bin/generate_keystore.sh根据提示,输入用户自定义密码,在“/opt/Bigdata/client/Flink/flink/conf”目录下生成“flink.keystore”和“flink.truststore”。 在“flink”目录下新建“test”目录,将“flink.keystore”和“flink.truststore”拷贝到该目录下。cd /opt/Bigdata/client/Flink/flink/ mkdir test cp conf/flink.keystore test/ cp conf/flink.truststore test/修改flink-conf.yaml文件。cd /opt/Bigdata/client/Flink/flink/conf vi flink-conf.yaml 修改参数如下: security.ssl.keystore: test/flink.keystore //修改flink.keystore位置,必须为相对路径 security.ssl.truststore: test/flink.truststore //修改flink.truststore位置,必须为相对路径说明 “security.ssl.key-password”、“security.ssl.keystore-password”和“security.ssl.truststore-password”的值需要使用Manager明文加密API进行获取:curl -k -i -u : -X POST -HContent-type:application/json -d '{"plainText":""}' 'https://x.x.x.x:28443/web/api/v2/tools/encrypt';其中要与签发证书时使用的密码一致,x.x.x.x为集群Manager的浮动IP。 参数名和参数取值之间需要以空格隔开。进入Flink客户端主目录,启动集群。cd /opt/Bigdata/client/Flink/flink/ ./bin/yarn-session.sh -jm 1024 -tm 1024 -t test/ -d二、准备工作准备JAR包和配置文件 jar包可以随意创建目录放进去,后面启动程序时会指定路径,flink.properties配置文件必须放置到flink客户端安装的家目录(/opt/lyfclient/hadoopclient/Flink/flink/conf),根据实际客户端安装路径更改。 flink.properties文件driver="org.postgresql.Driver"; url="jdbc:postgresql://x.x.x.x:25308/default"; username= ""; password= ""; sql = "Copy demotest from STDIN DELIMITER ','"配置文件中配置:url连接数据的字符串,其中IP需要更换成200的数据库节点IP,端口号根据环境填写,postgres表示默认数据库,可以修改。username表示连接数据库的用户。password表示连接数据库的密码。sql = "Copy demotest from STDIN DELIMITER ','"GAUSSdb准备工作配置白名单su – omm gs_guc set -Z coordinator -N all -I all -h "host all allX.X.X.X/X sha256"备注:只需要修改IP及掩码即可,其他保持默认。创建数据库用户并赋权 按照顺序执行如下命令:1. su – omm 2. source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile 3. gsql -d postgres -p 25308 -r 4. CREATE USER test WITH CREATEDB PASSWORD "Huawei@123"; 5. GRANT ALL PRIVILEGES TO test;创建GaussDB200数据表gsql -d postgres -p 25308 -r -Utest -WHuawei@123(需要提前创建test数据库用户,并赋予权限) create table demotest(id integer,name varchar2);使用新用户登录,并创建样例表gsql -d postgres -p 25308 -r -Utest -passwd create table demotest(id integer,name varchar2);三、提交任务将打包好的flinkdws jar包提交到对应的目录下提交命令bin/flink run --class com.huawei.bigdata.flink.examples.WriteIntoDWS /opt/sandbox/FlinkKafkaJavaExample.jar --topic dws --bootstrap.servers x.x.x.x:21005在对应的topic中写入数据cd $KAFKA_HOME bin/kafka-console-producer.sh --broker-list X.X.X.X:21007 --topic dws --producer.config config/producer.properties消费数据bin/kafka-console-consumer.sh --consumer.config config/consumer.properties --bootstrap-server x.x.x.x:21007 --topic dws --from-beginning查看flink 页面任务 查看是否读取到了写入的数据 四、查看数据 进入GAUSSDB数据库su - omm source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile gsql -d test -p 25308 (注意postgres是默认database)select * from demotest; 读取的数据都写入了该表
-
Spark读安全kafka写安全hbase, hdfs, es场景sparkstreaming读取安全kafka两个topic的数据分别写入hbase两张表,hdfs两个表以及es赞批方式写入两个索引数据源(参考样例代码 CreateData类):Detail kafka数据 2010-00-03 16:32:51|1|65358977|汇总|6|Upward Report kafka数据 2|0710123708000000500000000000|状态报告匹配消息|99604118259|99602358259|2003-02-13 16:32:51|2007-07 16:35:52|10|expired,短消息超过有效期|22|详细内2容提前在kafka创建两个topic名字叫做detaildata以及reportdata对接Kafka安全模式注意事项spark使用yarn client模式提交命令时使用Spark客户端下面的jaas.zk(driver端读取)以及jaas-zk.conf (executor端读取) Client { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="./user.keytab" principal="sandbox" useTicketCache=false storeKey=true debug=true; }; KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="./user.keytab" principal="sandbox" useTicketCache=false storeKey=true debug=true; };注意:配置的路径为相对路径是为了和后面的spark-submit命令 --files 配合使用,也可以填绝对路径。对接安全ES注意事项ES kerberos安全认证为华为自研开发如图所示,ESclient默认会获取运行当前目录的conf下获取配置文件进行认证,需要三个文件esParams.properties、krb5.conf、user.keytab。其中esParams.properties样例内容如下然后自己做认证,不用特别在代码里写认证逻辑详细说明参考产品文档相关部分:需要注意的是,要看HwRestClient初始化是发生在spark driver端还是executor端。如果是driver端,则需要在提交命令的linux路径创建conf目录,放入esParams.properties, user.keytab, krb5.conf配置文件如果是executor端,则需要使用zip conf.zip esParams.properties krb5.conf user.keytab打包提交任务是使用 --archive指定比如 --archives /home/sandbox/conf.zip#conf对接HDFS安全认证注意事项hdfs相关写入在spark架构中做认证,无需在代码特别写认证逻辑,只需要source /opt/hadoopclient/bigdata_env,kinit认证之后spark-submit提交即可spark-submit提交命令是 --keytab --principal参数是保证长时间运行spark任务的时候driver端使用指定参数使用该参数做认证,下发到executor端,避免长时间任务挂掉--files参数是上传需要读取的配置文件对接HBase安全认证注意事项hbase认证在driver端用代码做好认证,可以指定对应的hdfs-site.xml,core-site.xml以及hbase-site.xml配置文件,或者可以在提交spark-submit之前使用source /opt/hadoopclient/bigdata_env自动加载init加载配置文件login做kerberos认证打包以及提交任务使用IDEA进行打包,上传至客户端某路径比如/opt/sandbox,准备好提交jar包, conf目录放置es配置文件,以及jars里面是可能需要的jar包spark-submit提交命令 spark-submit --master yarn-client --files ./user.keytab --class com.huawei.bigdata.spark.examples.streaming.SparkOnStreamingToESHdfsHbase_master --keytab /opt/sandbox/user.keytab --principal sandbox --archives /opt/sandbox/conf.zip#conf --jars /opt/sandbox/jars/spark-streaming-kafka-0-10_2.12-3.1.1-h0.cbu.mrs.320.r11.jar,./jars/kafka-clients-2.4.0-h0.cbu.mrs.320.r11.jar,./jars/spark-token-provider-kafka-0-10_2.12-3.1.1-h0.cbu.mrs.320.r11.jar /opt/sandbox/Spark2HBaseESHDFS-1.0.jar /tmp detaildata,reportdata x.x.x.x:21007写入数据并检查结果分别向kafka的detaildata以及reportdata写入数据检查hbase(任务会自动创建hbase表,表名为 detail+年份+月份, report+年份+月份)检查hdfs数据(需要手动创建hive表)#hive建表查询 CREATE external TABLE `detail_table`( `date` varchar(128), `gateway_name` varchar(128), `enterprise_code` varchar(128), `business_code` varchar(128), `service_code` varchar(128), `send_direction` varchar(128)) stored as parquet location '/sandbox/detail_data'; #spark查 val parqDF = spark.read.parquet("/sandbox/detail_data") parqDF.createOrReplaceTempView("ParquetTable") spark.sql("select * from ParquetTable").explain() val parkSQL = spark.sql("select * from ParquetTable") parkSQL.show()#hive建表查询 CREATE external TABLE `report_table`( `gatewayname` varchar(128), `message_id` varchar(128), `message_type` varchar(128), `calling_number` varchar(128), `called_number` varchar(128), `submission_time` varchar(128), `final_end_time` varchar(128), `message_status` varchar(128), `message_status_description` varchar(128), `message_length` varchar(128), `details` varchar(128)) stored as parquet location '/sandbox/report_data'; #spark查 val parqDF = spark.read.parquet("/sandbox/report_data") parqDF.createOrReplaceTempView("ParquetTable") spark.sql("select * from ParquetTable").explain() val parkSQL = spark.sql("select * from ParquetTable") parkSQL.show()检查es数据(任务会自动创建es索引,索引名为 detail+年份+月份, report+年份+月份)curl -XGET --tlsv1.2 --negotiate -k -u : 'https://x.x.x.x:24100/report_2023_3/_search?pretty'curl -XGET --tlsv1.2 --negotiate -k -u : 'https://x.x.x.x:24100/detail_2023_3/_search?pretty'FAQ问题1: 使用spark-submit提交命令时,遇到es认证报错分析报错可知es启动client的时候需要读取指定配置文件esParams.properties里的es node连接信息mrs的es组件会默认找当前目录下conf目录作为配置文件的存放路径(esParams.properties, user.keytab, krb5.conf)。又根据代码知道es认证发生在driver端,所以认证方法同executor端有所区别。解决办法: 在指定路径比如/opt/sandbox准备好conf目录,以及配置文件再次提交问题解决
-
Spark读取安全kafka写安全ES场景使用sparkstreaming读取安全kafka topic的数据,写入同集群安全模式的ES。kafka topic名字sandboxtopic, 写入es 索引名examplehuaweiKafka准备样例数据创建样例topic,比如sandboxtopic,需要提前创建样例数据:{"date":"2023-2-15","textbody":"hello","title":"haha"} {"date":"2023-2-16","textbody":"hello2","title":"haha2"} {"date":"2023-2-17","textbody":"hello3","title":"haha3"} {"date":"2023-2-18","textbody":"hello4","title":"haha4"}对接Kafka安全模式注意事项spark使用yarn client模式提交命令时使用Spark客户端下面的jaas.conf(driver端读取)以及jaas-zk.conf (executor端读取)Client { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="./user.keytab" principal="sandbox" useTicketCache=false storeKey=true debug=true; }; KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="./user.keytab" principal="sandbox" useTicketCache=false storeKey=true debug=true; };注意:配置的路径为相对路径是为了和后面的spark-submit命令 --files 配合使用,也可以填绝对路径。对接安全ES注意事项ES kerberos安全认证为华为自研开发如图所示,ESclient默认会获取运行当前目录的conf下获取配置文件进行认证,需要三个文件esParams.properties、krb5.conf、user.keytab。其中esParams.properties样例内容如下然后自己做认证,不用特别在代码里写认证逻辑详细说明参考产品文档相关部分:针对上述特点,使用spark-submit提交命令时,如果运行ES的kerberos认证逻辑在executor端发生,由于yarn无法放置conf目录,需要借助--archive实现。可以使用如下步骤完成。由下图可知es认证在executor发生 注意:如果es认证是在driver端发生,则需要在提交命令的linux创建conf目录放入这三个配置文件在提交linux客户端准备好三个文件esParams.properties、krb5.conf、user.keytab。使用命令``zip conf.zip esParams.properties krb5.conf user.keytab`打包提交任务是使用 --archive指定比如 --archives /home/sandbox/conf.zip#conf打包以及提交任务使用IDEA进行打包,上传至客户端某路径比如/home/sandbox,准备好打包的conf.zip, 提交jar包,以及jars里面是可能需要的jar包提交命令spark-submit --master yarn --deploy-mode client --class streaming010.TestStreaming010 --keytab /home/sandbox/user.keytab --principal sandbox --files ./user.keytab --archives /home/sandbox/conf.zip#conf --jars ./jars/spark-streaming-kafka-0-10_2.12-3.1.1-h0.cbu.mrs.320.r11.jar,./jars/kafka-clients-2.4.0-h0.cbu.mrs.320.r11.jar,./jars/spark-token-provider-kafka-0-10_2.12-3.1.1-h0.cbu.mrs.320.r11.jar /home/sandbox/sparkkafka2es-1.0.0.jar /tmp/test 172.16.9.114:21007 sandboxtopic 10写入数据并检查结果bin/kafka-console-producer.sh --broker-list x.x.x.x:21007 --topic sandboxtopic --producer.config config/producer.propertiescurl -XGET --tlsv1.2 --negotiate -k -u : 'https://x.x.x.x:24100/examplehuawei/_search?pretty'注意点1:本地模式调试读取安全kafka在local模式调试的时候需要注意,要在代码里面做认证。如果使用spark-submit提交可以不需要在代码里做认证,会通过--principal --keytab参数做认证连接安全模式kafka需要配置jaas.conf配置文件,可以参考上图的setJaasFile配置好KafkaClient否则会报错:Caused by: java.lang.IllegalArgumentException: Could not find a 'KafkaClient' entry in the JAAS configuration. System property 'java.security.auth.login.config' is not set at org.apache.kafka.common.security.JaasContext.defaultContext(JaasContext.java:133) at org.apache.kafka.common.security.JaasContext.load(JaasContext.java:98) at org.apache.kafka.common.security.JaasContext.loadClientContext(JaasContext.java:84) at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:124) at org.apache.kafka.common.network.ChannelBuilders.clientChannelBuilder(ChannelBuilders.java:67)注意点2:本地模式调试读取安全ES参考上述特点,本地调试ES时需要准备对应的配置conf目录,放置三个文件esParams.properties、krb5.conf、user.keytab即可认证FAQ错误1:写入ES的时候在Spark Executor报错仔细观察堆栈信息发现es的配置没有读取到报错原因:写入ES的时候需要读取ES相关的配置文件esParams.properties, 认证的user.keytab, krb5.conf三个文件打包esParams.properties文件内容如下在linux可以使用命令打包zip conf.zip esParams.properties krb5.conf user.keytab成功读取到配置文件后executor正确日志
-
REST接口访问常用组件原生界面(yarn, mr, hive)应用场景业务开发过程中,经常使用rest接口访问yarn,mr原生界面信息进行管理。hive同时提供webhcat接口进行交互。关键点交互过程使用kerberos认证,http访问场景下也叫做spnego认证同组件原生界面交互时需要跟服务端做ssl以最简单的GET请求为例分别获取Yarn, MapReduce, hive相关信息确定访问的请求ip以及端口参考如下连接了解如获取直连组件原生界面的方法:cid:link_0比如//Yarn访问resource manager String url1 = "https://xxx.xx.x.xxx:26001/ws/v1/sscheduler/resourcepools/list"; //Mapreduce访问job history server String url = "https://xxx.xx.x.xxx:26014:26014/ws/v1/history/mapreduce/jobs"; //Hive使用webHcat接口查询库 String url = "https://xxx.xx.x.xxx:21055/templeton/v1/ddl/database";查询结果Yarn:MR:Hive:FAQ问题1:运行时遇到问题 问题原因:ssl没做参考样例代码片段配置证书
-
使用的是hive用户组下的用户,在manager网页中把能给的权限都给了,还是提示 Permissin denied
-
有没有从HIVE导出到MySQL对应的模板文件XML和JSON文件提供啊,不知道要填哪些参数。
-
1.集群互信6.5.1.3和6.5.1.7集群是否可以配置互信?2.配置互信后不更新客户端有什么影响?3.通过A集群spark访问B集群habse,是否只需要配置A集群域就可以B集群不需要动? B集群域名不改是否需要重新安装客户端?及key文件4.ntp默认的时间一致,ntp IP不一致是否有影响?
-
kafka报错这个是什么引起的?对业务有影响没?
-
Manager经典案例集锦一:ssh、su命令执行卡顿导致OMS异常问题现象:主备频繁倒换,oms偶发登陆不上,FI页面打不开查看oms状态floatip异常,主备频繁倒换查看主备oms节点:du -sh /var/log/btmp 有2个多G,执行su - omm命令都很卡问题根因/var/log/btmp 文件比较大,导致执行命令很卡,导致oms浮动ip异常造成/var/log/btmp 文件比较大可能原因祥见(linux_work32挖矿病毒处置方法.docx)解决方法清理 /var/log/btmp 文件
-
Manager全部案例集合见维护宝典:https://support.huawei.com/hedex/hdx.do?docid=EDOC1100222546&lang=zh&idPath=22658044|22662728|22666212|22396131(FusionInsight HD&MRS租户面集群故障案例(6.5.X-8.X)->维护故障类->Manager->常见故障)Manager经典案例、总结、重大问题见下表:经典案例分类序号案例(点击标签查看详情)出现频次环境类常见故障1-1ssh、su命令执行卡顿导致OMS异常:维护类故障(6.5.X-8.X)>Manager>常见故障>环境类常见故障★★★1-2网络慢导致Manager页面访问失败:维护类故障(6.5.X-8.X)>Manager>常见故障>环境类常见故障★★1-3/etc/ntp.conf文件权限不对导致ntp异常:维护类故障(6.5.X-8.X)>Manager>常见故障>环境类常见故障★★★1-4节点健康状态为Bad(故障):维护类故障(6.5.X-8.X)>Manager>常见故障>环境类常见故障★★★★1-5postgresql.conf配置文件有误导致gaussdb异常:维护类故障(6.5.X-8.X)>Manager>常见故障>环境类常见故障★★★1-6Manager页面上报所有节点ntp服务告警:维护类故障(6.5.X-8.X)>Manager>常见故障>监控告警常见故障★★★ 1-7 OS定时任务进程异常导致节点互信异常:维护类故障(6.5.X-8.X)>Manager>常见故障>环境类常见故障★★★OS类常见故障2-1 配置的ntp外部时钟源可以ping通,但是ntp服务不能同步时间:维护类故障(6.5.X-8.X)>Manager>常见故障>OS类常见故障★★★★ 2-2系统时间倒退导致NodeAgent无法启动:维护类故障(6.5.X-8.X)>Manager>常见故障>OS类常见故障★★ 2-3安装OMS时配置失败:维护类故障(6.5.X-8.X)>Manager>常见故障>OS类常见故障★★★★ 2-4suse12.2 pam-systemd导致su、sudo、ssh卡顿问题:维护类故障(6.5.X-8.X)>Manager>常见故障>OS类常见故障★★ 节点类常见故障3-1节点上下电导致NodeAgent启动失败:维护类故障(6.5.X-8.X)>Manager>常见故障>节点类常见故障>节点上下电导致NodeAgent启动失败★★★★3-2Ntp启动失败导致NodeAgent故障:维护类故障(6.5.X-8.X)>Manager>常见故障>节点类常见故障>Ntp启动失败导致NodeAgent故障★★★3-3修改了/etc/sysconfig/ntpd文件里的内容导致节点故障:维护类故障(6.5.X-8.X)>Manager>常见故障>节点类常见故障>修改了/etc/sysconfig/ntpd文件里的内容导致节点故障★★★3-4某个节点所有实例均失败, nodeagent不断在重启:维护类故障(6.5.X-8.X)>Manager>常见故障>节点类常见故障>某个节点所有实例均失败, nodeagent不断在重启★★★
-
hive全部案例集合见维护宝典:https://support.huawei.com/hedex/hdx.do?docid=EDOC1100222546&lang=zh&idPath=22658044|22662728|22666212|22396131(FusionInsight HD&MRS租户面集群故障案例(6.5.X-8.X)->维护故障类->hive->常见故障)hive经典案例、总结、重大问题见下表:经典案例分类序号案例出现频次sql优化1.1Hive sql写法问题导致结果异常合集(一)★★1.2Hive sql写法问题导致结果异常合集(二)★★1.3Hive sql写法问题导致运行慢问题合集(一)★★★★1.4Hive sql写法问题导致运行慢问题合集(二)★★★★1.5Hive sql写法问题导致运行慢问题合集(三)★★★★服务异常2.1Hiveserver启动成功,但页面显示状态故障★★2.2Metastore启动故障,报failed to initizlize master key★★2.3Metastore启动故障,报user hive does not belong to hive★★★★
-
Flink全部案例集合见维护宝典:https://support.huawei.com/hedex/hdx.do?docid=EDOC1100222546&lang=zh&idPath=22658044|22662728|22666212|22396131 (FusionInsight HD&MRS租户面集群故障案例(6.5.X-8.X)->维护故障类->Flink->常见故障)经典案例分类序号案例出现频次现网经典案例1.1关于table.exec.state.ttl参数的生效机制★★客户端安装常见问题2.1Flink客户端配置方法(维护宝典:维护类故障(维护类故障(6.5.X-8.X)>Flink>FAQ>下载并配置Flink客户端)★★★★★2.2升级后任务提交失败,报zk节点权限不足(维护宝典:维护类故障(6.5.X-8.X)>Flink>任务提交常见故障>FusionInsight HD大版本从6.5.1升级到8.x版本后任务提交失败)★★★★★2.3开启ssl后,正确的提交方式(维护宝典:维护类故障(6.5.X-8.X)>Flink>任务提交常见故障>创建Flink集群时执行yarn-session.sh命令失败)★★★★★
-
Flink的table.exec.state.ttl参数说明:Flink SQL 新手有可能犯的错误,其中之一就是忘记设置空闲状态保留时间导致状态爆 炸。列举两个场景:➢ FlinkSQL 的 regular join(inner、left、right),左右表的数据都会一直保存在 状态里,不会清理!要么设置 TTL,要么使用 FlinkSQL 的 interval join。➢ 使用 Top-N 语法进行去重,重复数据的出现一般都位于特定区间内(例如一小时 或一天内),过了这段时间之后,对应的状态就不再需要了。Flink SQL 可以指定空闲状态(即未更新的状态)被保留的最小时间,当状态中某个 key 对应的状态未更新的时间达到阈值时,该条状态被自动清理:基于811版本测试,测试SQL的代码如下: EnvironmentSettings.Builder builder = EnvironmentSettings.newInstance(); builder.inStreamingMode(); builder.useBlinkPlanner(); EnvironmentSettings settings = builder.build(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, settings); env.enableCheckpointing(6000L); env.setStateBackend(new RocksDBStateBackend("hdfs:///xxxx));//启用hdfs状态后端 env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE); env.getCheckpointConfig().setCheckpointTimeout(600000L); env.getCheckpointConfig().setMaxConcurrentCheckpoints(1); env.getCheckpointConfig().setFailOnCheckpointingErrors(false); env.getCheckpointConfig().enableExternalizedCheckpoints(CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION); Configuration configuration = tableEnv.getConfig().getConfiguration(); configuration.setString("table.exec.state.ttl","10000"); String sqlTable_1 = "CREATE TABLE source1 (\n" + " name varchar(10),\n" + " vaa varchar(10),\n" + " ts AS PROCTIME()\n" + ") WITH (\n" + " 'connector' = 'kafka',\n" + " 'topic' = 'user_source1',\n" + " 'properties.bootstrap.servers' = 'kafka:21005',\n" + " 'properties.group.id' = 'testGroup',\n" + " 'scan.startup.mode' = 'latest-offset',\n" + " 'format' = 'csv'\n" + ")"; String SqlTable_2 = "" + "CREATE TABLE source2 (\n" + " name varchar(10),\n" + " vaa varchar(10),\n" + " ts AS PROCTIME()\n" + ") WITH (\n" + " 'connector' = 'kafka',\n" + " 'topic' = 'user_source2',\n" + " 'properties.bootstrap.servers' = 'kafka:21005',\n" + " 'properties.group.id' = 'testGroup',\n" + " 'scan.startup.mode' = 'latest-offset',\n" + " 'format' = 'csv'\n" + ")"; String inputTable="create table p (\n" + " name1 varchar(10),\n" + " name2 varchar(10),\n" + " vaa1 varchar(10),\n" + " vaa2 varchar(10)\n" + ") with ('connector' = 'print')"; String sql = "insert into\n" + " p\n" + "select\n" + " source1.name,\n" + " source2.name,\n" + " source1.vaa,\n" + " source2.vaa\n" + "FROM\n" + " source1\n" + " join source2 on source1.name = source2.name"; //创建表1 tableEnv.executeSql(sqlTable_1); //创建表2 tableEnv.executeSql(SqlTable_2); //创建输出表 tableEnv.executeSql(inputTable); //执行结果 tableEnv.executeSql(sql); 执行sql的代码片段如下:在这个用例中我们使用的TTL时间参数为10s失效。当同时输入:topic:user_source1 的数据 zs,aaa topic:user_source2的数据zs,bbb 结果如下:但是输入:topic:user_source1 的数据ls,aaa 间隔大于10s后输入 topic:user_source2的数据ls,bbb未出现结果:从测试结果来看:(1)常规联接是最通用的联接类型,其中任何新记录或对联接任一侧的更改都是可见的,并且会影响整个联接结果。例如左边有一条新记录,当product id 相等时,它会与右边所有以前和以后的记录合并。SELECT * FROM OrdersINNER JOIN ProductON Orders.productId = Product.id对于流式查询,常规连接的语法是最灵活的,并且允许任何类型的更新(插入、更新、删除)输入表。但是,此操作具有重要的操作含义:它需要将连接输入的两侧永远保持在 Flink 状态。因此,计算查询结果所需的状态可能会无限增长,具体取决于所有输入表和中间连接结果的不同输入行的数量。(2)如果设置了TTL的时间后,过了TTL时间后,之前的状态数据会被删除。
上滑加载中
推荐直播
-
空中宣讲会 2025年华为软件精英挑战赛
2025/03/10 周一 18:00-19:00
宸睿 华为云存储技术专家、ACM-ICPC WorldFinal经验 晖哥
2025华为软挑赛空中宣讲会重磅来袭!完整赛程首曝+命题天团硬核拆题+三轮幸运抽奖赢参赛助力礼包,与全国优秀高校开发者同台竞技,直通顶尖赛事起跑线!
回顾中 -
华为开发者空间玩转DeepSeek
2025/03/13 周四 19:00-20:30
马欣 华为开发者布道师
同学们,想知道如何利用华为开发者空间部署自己的DeepSeek模型吗?想了解如何用DeepSeek在云主机上探索好玩的应用吗?想探讨如何利用DeepSeek在自己的专有云主机上辅助编程吗?让我们来一场云和AI的盛宴。
即将直播 -
华为云Metastudio×DeepSeek与RAG检索优化分享
2025/03/14 周五 16:00-17:30
大海 华为云学堂技术讲师 Cocl 华为云学堂技术讲师
本次直播将带来DeepSeek数字人解决方案,以及如何使用Embedding与Rerank实现检索优化实践,为开发者与企业提供参考,助力场景落地。
去报名
热门标签