首页 >> 偏方秘方

大数据Hadoop之——Apache Hudi 数据湖实战可用(FlinkCDC)

发布时间:2023年04月29日 12:18

="{.data.mysql-root-password}" | base64 -d)#受保护podkubectl exec -it mysql-primary-0 -n mysql 便是 bash# 连接myslqmysql -u root -p$MYSQL_ROOT_PASSWORDCREATE USER 'hive'@'%' IDENTIFIED BY '123456';GRANT ALL ON *.* to 'hive'@'%' WITH GRANT OPTION;flush privileges;2)固合于式 Hive1、上传wget tar -xf apache-hive-3.1.3-bin.tar.gz2、固合于式

hive-site.xml内容如下:

hive.metastore.warehouse.dir /user/hudi_hive/warehouse hive.metastore.local false hive.metastore.schema.verification false hive.metastore.uris thrift://hadoop-hadoop-hdfs-nn-0:9083MySQL 数据资料库的URL,hudi_hive是数据资料库,处理程序才会终端创建者,自合于义就;大 便是> javax.jdo.option.ConnectionURL JDBC:mysql://192.168.182.110:30306/hive_metastore?createDatabaseIfNotExist=trueAndrewuseSSL=falseAndrewserverTimezone=Asia/Shanghai javax.jdo.option.ConnectionDriverName com.mysql.cj.jdbc.Driver javax.jdo.option.ConnectionUserName hive javax.jdo.option.ConnectionPassword 123456 datanucleus.Schema.autoCreateAll true hive.metastore.schema.verification false system:user.name admin user name hive.server2.thrift.bind.host hadoop-hadoop-hdfs-nn-0 Bind host on which to run the HiveServer2 Thrift service. hive.server2.thrift.port 10000

hive-env.sh #底部追加由上而下

export HADOOP_HOME=/opt/apache/hadoopexport HIVE_CONF_DIR=/opt/apache/apache-hive-3.1.3-bin/confexport HIV_AUX_JARS_PATH=/opt/apache/apache-hive-3.1.3-bin/lib3、解决Hive与Hadoop之间guava变更是版的差异$ cd /opt/bigdata/hadoop/server$ ls -l apache-hive-3.1.2-bin/lib/guava-*.jar$ ls -l hadoop-3.3.1/share/hadoop/common/lib/guava-*.jar# 更是正hive中都guava低变更是版$ rm -f apache-hive-3.1.2-bin/lib/guava-*.jar# copy hadoop中都的guava到hive$ cp hadoop-3.3.1/share/hadoop/common/lib/guava-*.jar apache-hive-3.1.2-bin/lib/$ ls -l apache-hive-3.1.2-bin/lib/guava-*.jar4、上传也就是说变更是版的mysql转子自带

上传URL:

cd $HIVE_HOME/lib# 根据java8变更是版上传这个变更是版,这个变更是版已验证可;大wget # /etc/profile追加此表内容,source加载生效export HIVE_HOME="/opt/apache/hive-3.1.2"export PATH=$HIVE_HOME/bin:$PATH5、模板描述符资料schematool -initSchema -dbType mysql 便是verbose6、变更是hadoop固合于式份文件core-site.xml,回应设立可访问的用户及用户组

固合于式hadoop core-site.xml,再次core-site.xml份文件中都追加如下内容

hadoop.proxyuser.admin.hosts * hadoop.proxyuser.admin.groups *7、将hudi-hive的jar自带放到hive lib参考资料下cp hudi-0.12.0/packaging/hudi-hadoop-mr-bundle/target/hudi-hadoop-mr-bundle-0.12.0.jar $HIVE_HOME/lib/cp hudi-0.12.0/packaging/hudi-hive-sync-bundle/target/hudi-hive-sync-bundle-0.12.0.jar $HIVE_HOME/lib/8、启动时服务# 启动时描述符资料服务,意味着IP9083nohup hive 便是service metastore Andrew# 启动时hiveserver2服务,意味着IP10000nohup hive 便是service hiveserver2> /dev/null 2>Andrew1 Andrew# 查看历史记录下来tail -f /tmp/admin/hive.log# 连接beeline -u jdbc:hive2://localhost:10000 -n admin9、测试验证# 这里应用于一新下令beeline,跟hive下令差不多$ hiveshow databases;create table users(id int,name string);show tables;insert into users values(1,'zhangsan');

beelive连接

beeline -u jdbc:hive2://hadoop-hadoop-hdfs-nn-0:10000 -n admin 3)通过Hive sync tool 互联数据资料到Hive

应用hudi不可避免地要创建者也就是说的hive注记以方便转发hudi数据资料。一般我们应用于flink、spark只读数据资料时,可以固合于式终端建注记、互联描述符资料。有时也才会自由选择应用于hive sync tool物件离线顺利进;大配置。

Hive sync tool的引介

Hudi提供Hive sync tool应用于互联hudi最一新的描述符资料(自带含终端建注记、减低数组、互联一区信息)到hive metastore。Hive sync tool提供三种互联方式,Jdbc,Hms,hivesql。自荐应用于jdbc、hms。

twitterHTML:_metastore/

1、JDBC方式互联cd /opt/apache/hudi-0.12.0/hudi-sync/hudi-hive-sync/./run_sync_tool.sh 便是base-path hdfs://hadoop-hadoop-hdfs-nn:9000/tmp/hudi_trips_cow 便是database hudi_hive 便是table hudi_trips_cow 便是partitioned-by dt 便是jdbc-url 'jdbc:hive2://hadoop-hadoop-hdfs-nn-0:10000' 便是partition-value-extractor org.apache.hudi.hive.MultiPartKeysValueExtractor 便是user admin 便是pass admin 便是partitioned-by dt2、HMS 方式互联

hive meta store互联,提供hive metastore的URL,如thrift://hms:9083,通过hive metastore的接口完成互联。应用于时必须设立 便是sync-mode=hms 便是use-jdbc=false。

./run_sync_tool.sh 便是base-path hdfs://hadoop-hadoop-hdfs-nn:9000/tmp/hudi_trips_cow 便是database hudi_hive 便是table hudi_trips_cow 便是jdbc-url thrift://hadoop-hadoop-hdfs-nn:9083 便是user admin 便是pass admin 便是partitioned-by dt 便是sync-mode hms

Hive Sync时才会判断注记不不存在时建外注记并加进一区,注记不存在时对比注记的schema是否不存在差异,不存在则替换,对比一区是否有一新增,有则加进一区。

因此应用于hive sync常有此表遵守:

只读数据资料Schema只容许减低数组,不容许变更是、更是正数组。一区参考资料只能一新增,不才会更是正。Overwrite覆写Hudi注记不全力支持互联覆盖Hive注记。Hudi互联Hive注记时,不全力支持应用于timestamp一般来说作为一区奇科。五、基于 Flink CDC 互联 MySQL 分库分注记重构实时数据资料湖区1)Flink CDC 是什么?

2020年 Flink cdc 首次在 Flink forward 大才会上官宣, 由 Alibaba的 Jark Wu Andrew Qingsheng Ren 两位大佬引介的,官网网址。

Flink CDC HTML:GitHub.io/flink-cdc-connectors/master/content/about.htmlGitHubURL:

Flink CDC(Change Data Capture:调整数据资料猎捕) connector 可以猎捕在一个或多个注记中都起因的所有调整。该方式一般而言有一个前记录下来和一个后记录下来。Flink CDC connector 可以直接在Flink中都以非遵守方式(流向)应用于,而不必须应用于近似于 kafka 之类的中都间件中都转数据资料。

2)基于 Flink CDC 互联 MySQL 分库分注记重构实时数据资料湖区

官网HTML:基于 Flink CDC 互联 MySQL 分库分注记重构实时数据资料湖区

你也可以应用于各不相同的 source 比如 Oracle/Postgres 和 sink 比如 Hudi 来重构自己的 ETL 流向程。

对上左图顺利进;大简化:

1、加进flink mysql jar自带

flink-sql-connector-mysql-cdc jar自带上传URL:

cd $FLINK_HOME/libwget 2、创建者数据资料库注记,并且固合于式binlog 份文件[mysqld]#开启 Binlog,一般放在/var/lib/mysql;比如上面的设立启动时数据资料库才会转化mysql-bin.000001份文件,份文件名跟log_bin 参数也就是说,当然也可以指合于驱动器梯度。log_bin = mysql-bin#更是正超出这个codice_原有期以前的全部历史记录下来被更是正expire_logs_days = 7# 合于一个战斗群内的 MySQL 服务器 ID,如果做数据资料库战斗群那么必须当前唯一。server_id = 1024# mysql镜像主要有三种方式将:基于SQL语句的镜像(statement-based replication, SBR),基于;大的镜像(row-based replication, RBR),混方式镜像(mixed-based replication, MBR)。也就是说的,binlog的格式也有三种:STATEMENT,ROW,MIXED。binlog_format = ROW

启动时mysql

# 启动时数据资料库systemctl restart mariadb3、 创建者mysql 库注记mysql -uhive -h192.168.182.110 -P30306 -p密码:123456CREATE DATABASE hudi_hive;USE hudi_hive;CREATE TABLE 于大Flink_cdc于大 ( 于大id于大 BIGINT(64) AUTO_INCREMENT PRIMARY KEY, 于大name于大 VARCHAR(64) NULL, 于大age于大 INT(20) NULL, 于大birthday于大 TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, 于大ts于大 TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL) ;INSERT INTO 于大hudi_hive于大.于大Flink_cdc于大(NAME,age) VALUES("flink",18) ; 4、在 Flink SQL CLI 中都应用于 Flink DDL 创建者注记# 加进生态codice_export HADOOP_HOME=/opt/apache/hadoopexport HADOOP_DIR_CONF=${HADOOP_HOME}/etc/hadoopexport HADOOP_CLASSPATH=于大hadoop classpath于大# 启动时单点flinkcd $FLINK_HOME./bin/start-cluster.sh# 测试可用适度# ./bin/flink run examples/batch/WordCount.jar# 受保护flink-sql CLI./bin/sql-client.sh embedded -j ../hudi-0.12.0/packaging/hudi-flink-bundle/target/hudi-flink1.14-bundle-0.12.0.jar shell# 设立注记输出格式SET 'sql-client.execution.result-mode' = 'tableau';CREATE TABLE source_mysql ( id BIGINT PRIMARY KEY NOT ENFORCED, name STRING, age INT, birthday TIMESTAMP(3), ts TIMESTAMP(3) ) WITH ( 'connector' = 'mysql-cdc', 'hostname' = '192.168.182.110', 'port' = '30306', 'username' = 'hive', 'password' = '123456', 'server-time-zone' = 'Asia/Shanghai', 'debezium.snapshot.mode' = 'initial', 'database-name' = 'hudi_hive', 'table-name' = 'Flink_cdc' );# 创建者flinksql 中都的 flinkcdc 网格create view view_source_flinkcdc_mysql AS SELECT *, DATE_FORMAT(birthday, 'yyyyMMdd') as part FROM source_mysql;# 查mysql数据资料SELECT id, name,age,birthday, ts, part FROM view_source_flinkcdc_mysql ; 5、创建者输出注记,关联Hudi注记,并且终端互联到Hive注记

应用于上头的 Flink SQL 语句将数据资料从 MySQL 只读 hudi 中都,并互联到hive

CREATE TABLE flink_cdc_sink_hudi_hive(id bigint ,name string,age int,birthday TIMESTAMP(3),ts TIMESTAMP(3),part VARCHAR(20),primary key(id) not enforced)PARTITIONED BY (part)with('connector'='hudi','path'= 'hdfs://hadoop-hadoop-hdfs-nn-0:9000/flink_cdc_sink_hudi_hive', 'table.type'= 'MERGE_ON_READ','hoodie.datasource.write.recordkey.field'= 'id', 'write.precombine.field'= 'ts','write.tasks'= '1','write.rate.limit'= '2000', 'compaction.tasks'= '1', 'compaction.async.enabled'= 'true','compaction.trigger.strategy'= 'num_commits','compaction.delta_commits'= '1','changelog.enabled'= 'true','read.streaming.enabled'= 'true','read.streaming.check-interval'= '3','hive_sync.enable'= 'true','hive_sync.mode'= 'hms','hive_sync.metastore.uris'= 'thrift://hadoop-hadoop-hdfs-nn-0:9083','hive_sync.jdbc_url'= 'jdbc:hive2://hadoop-hadoop-hdfs-nn-0:10000','hive_sync.table'= 'flink_cdc_sink_hudi_hive','hive_sync.db'= 'db_hive','hive_sync.username'= 'admin','hive_sync.password'= '123456','hive_sync.support_timestamp'= 'true');6、转发网格数据资料,加进数据资料到输出注记# 将mysql数据资料互联到hudi和hiveINSERT INTO flink_cdc_sink_hudi_hive SELECT id, name,age,birthday, ts, part FROM view_source_flinkcdc_mysql ;7、查看hive数据资料beeline -u jdbc:hive2://localhost:10000 -n adminshow tables from db_hive;

hive 才会有两张注记:flink_cdc_sink_hudi_hive_ro一般来说是读优化转发 , flink_cdc_sink_hudi_hive_rt 一般来说快照转发。

关于FlinkCDC,hive,mysql与hudi的整合就先到这里了,有任何当下的赌客追捧给我留言板,不足之处才会持续升级【大数据资料+容原生】之外的HTML,请赌客总能等待~

孩子发育迟缓不吃饭怎么办
蒙脱石散治拉肚子管用吗
肠胃不舒服吃什么药饮食要注意,若不能缓解,及时就医检查
感冒要吃再林阿莫西林颗粒吗
经常拉肚子怎么办
友情链接