文档首页/ MapReduce服务 MRS/ 开发指南(LTS版)/ 获取MRS应用开发样例工程
更新时间:2024-08-03 GMT+08:00

获取MRS应用开发样例工程

MRS样例工程构建流程

MRS样例工程构建流程包括三个主要步骤:

  1. 下载样例工程的Maven工程源码和配置文件,请参见获取MRS样例工程
  2. 配置华为镜像站中SDK的Maven镜像仓库,请参见配置华为开源镜像仓
  3. 根据用户自身需求,构建完整的Maven工程并进行编译开发。

获取MRS样例工程

MRS样例工程下载地址为https://github.com/huaweicloud/huaweicloud-mrs-example

切换分支为与MRS集群相匹配的版本分支,例如“mrs-3.2.0.1”,然后下载压缩包到本地后解压,即可获取各组件对应的样例代码工程。

图1 MRS样例工程代码下载

MRS LTS版本对应样例工程下载地址:

MRS普通版本对应样例工程下载地址:

配置华为开源镜像仓

华为提供开源镜像站,各服务样例工程依赖的jar包都可在华为开源镜像站下载,剩余所依赖的开源jar包请直接从Maven中央库或者其他用户自定义的仓库地址下载。

本地环境使用开发工具下载依赖的jar包前,需要确认以下信息。

  • 确认本地环境网络正常。

    打开浏览器访问:华为提供开源镜像站,查看网站是否能正常访问。如果访问异常,请先开通本地网络。

  • 确认当前开发工具是否开启代理。下载jar包前需要确保开发工具代理关闭。

    比如以2020.2版本的IntelliJ IDEA开发工具为例,单击“File > Settings > Appearance & Behavior > System Settings > HTTP Proxy”,选择“No proxy”,单击“OK”保存配置。

开源镜像配置方式如下所示:

  1. 使用前请确保您已安装JDK 1.8及以上版本和Maven 3.0及以上版本。
  2. 下载华为开源镜像站提供的“settings.xml”文件,覆盖至“<本地Maven安装目录>/conf/settings.xml”文件即可。

    若无法直接下载,在华为开源镜像站(https://mirrors.huaweicloud.com/)搜索并单击名称为“HuaweiCloud SDK”的版块,按照页面弹出的设置方法进行操作。

  3. 如果不想覆盖Maven配置文件,也可以参考以下方法手动修改“settings.xml”配置文件或者组件样例工程中的“pom.xml”文件,配置镜像仓地址。

    • 配置方法一

      手动在“settings.xml”配置文件的“mirrors”节点中添加以下开源镜像仓地址:

      <mirror>
          <id>repo2</id>
          <mirrorOf>central</mirrorOf>
          <url>https://repo1.maven.org/maven2/</url>
      </mirror>

      “settings.xml”配置文件的“profiles”节点中添加以下镜像仓地址:

      <profile>
          <id>huaweicloudsdk</id>
          <repositories>
              <repository>
                  <id>huaweicloudsdk</id>
                  <url>https://repo.huaweicloud.com/repository/maven/huaweicloudsdk/</url>
                  <releases><enabled>true</enabled></releases>
                  <snapshots><enabled>true</enabled></snapshots>
              </repository>
          </repositories>
      </profile>

      “settings.xml”配置文件的“activeProfiles”节点中添加如下profile地址:

      <activeProfile>huaweicloudsdk</activeProfile>
      • 华为开源镜像站不提供第三方开源jar包下载,请配置开源镜像后,额外配置第三方Maven镜像仓库地址。
      • 使用IntelliJ IDEA开发工具时,可单击“File > Settings > Build, Execution, Deployment > Build Tools > Maven”查看当前“settings.xml”文件放置目录。

    • 配置方法二

      请直接在二次开发工程样例工程中的“pom.xml”文件添加如下镜像仓地址:

          <repositories>
      
              <repository>
                  <id>huaweicloudsdk</id>
                  <url>https://mirrors.huaweicloud.com/repository/maven/huaweicloudsdk/</url>
                  <releases><enabled>true</enabled></releases>
                  <snapshots><enabled>true</enabled></snapshots>
              </repository>
      
              <repository>
                  <id>central</id>
                  <name>Maven Central</name>
                  <url>https://repo1.maven.org/maven2/</url>
              </repository>
      
          </repositories>

  4. 配置Maven默认编码和JDK。在“settings.xml”配置文件的“profiles”节点中添加以下内容:

    <profile>
    <id>JDK1.8</id>
    <activation>
    <activeByDefault>true</activeByDefault>
    <jdk>1.8</jdk>
    </activation>
    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
    </profile>

MRS各组件样例工程汇总

MRS样例代码库提供了各组件的基本功能样例工程供用户使用,当前版本各组件提供的样例工程汇总参见表1

表1 MRS组件样例工程汇总

组件

样例工程位置

描述

ClickHouse

clickhouse-examples

指导用户基于Java语言,实现MRS集群中的ClickHouse的数据表创建、删除以及数据的插入、查询等操作。

本工程中包含了建立服务端连接、创建数据库、创建数据表、插入数据、查询数据及删除数据表等操作示例。

ClickHouseJDBC-Transaction-JavaExample

ClickHouse事务开发代码样例,仅MRS 3.3.0及之后版本支持。

Doris

doris-examples/doris-jdbc-example

Doris数据读写操作的应用开发示例,仅MRS 3.3.0及之后版本支持。

通过调用Doris接口可实现创建用户表、向表中插入数据、查询表数据、删除表等功能

Flink

  • 开启Kerberos认证集群的样例工程目录“flink-examples/flink-examples-security”。
  • 未开启Kerberos认证集群的样例工程目录为“flink-examples/flink-examples-normal”。

FlinkCheckpointJavaExample

Flink异步Checkpoint机制的Java/Scala示例程序。

本工程中,程序使用自定义算子持续产生数据,产生的数据为一个四元组(Long,String,String,Integer)。数据经统计后,将统计结果打印到终端输出。每隔6秒钟触发一次checkpoint,然后将checkpoint的结果保存到HDFS中。

FlinkCheckpointScalaExample

FlinkHBaseJavaExample

Flink API作业读写HBase数据的Java示例程序。

MRS 3.2.0及之后版本支持。

FlinkKafkaJavaExample

Flink向Kafka生产并消费数据的Java/Scala示例程序。

在本工程中,假定某个Flink业务每秒就会收到1个消息记录,启动Producer应用向Kafka发送数据,然后启动Consumer应用从Kafka接收数据,对数据内容进行处理后并打印输出。

FlinkKafkaScalaExample

FlinkPipelineJavaExample

Flink Job Pipeline的Java/Scala示例程序。

本样例中一个发布者Job自己每秒钟产生10000条数据,另外两个Job作为订阅者,分别订阅一份数据。订阅者收到数据之后将其转化格式,并抽样打印输出。

FlinkPipelineScalaExample

FlinkSqlJavaExample

使用客户端通过jar作业提交SQL作业的应用开发示例。

FlinkStreamJavaExample

Flink构造DataStream的Java/Scala示例程序。

本工程示例为基于业务要求分析用户日志数据,读取文本数据后生成相应的DataStream,然后筛选指定条件的数据,并获取结果。

FlinkStreamScalaExample

FlinkStreamSqlJoinExample

Flink SQL Join示例程序。

本工程示例调用flink-connector-kafka模块的接口,生产并消费数据。生成Table1和Table2,并使用Flink SQL对Table1和Table2进行联合查询,打印输出结果。

FlinkRESTAPIJavaExample

本工程示例调用FlinkServer的RestAPI创建租户。

flink-examples/flink-sql

本工程示例使用Flink Jar提交SQL作业。

flink-examples/pyflink-example

pyflink-kafka

本工程示例使用Python提交普通作业,提供Python读写Kafka作业的样例。

pyflink-sql

本工程示例使用Python提交SQL作业,提供Python提交SQL作业的样例。

HBase

hbase-examples

hbase-example

HBase数据读写操作及全局二级索引的应用开发示例。通过调用HBase接口可实现以下功能:

  • 创建用户表、导入用户数据、增加用户信息、查询用户信息及为用户表创建二级索引等功能。
  • MRS 3.3.0及之后版本,可实现创建/删除全局二级索引、修改全局二级索引状态、以及基于全局二级索引查询等功能。

hbase-rest-example

HBase Rest接口应用开发示例。

使用Rest接口实现查询HBase集群信息、获取表、操作NameSpace、操作表等功能。

hbase-thrift-example

访问HBase ThriftServer应用开发示例。

访问ThriftServer操作表、向表中写数据、从表中读数据。

hbase-zk-example

HBase访问ZooKeeper应用开发示例。

在同一个客户端进程内同时访问MRS ZooKeeper和第三方的ZooKeeper,其中HBase客户端访问MRS ZooKeeper,客户应用访问第三方ZooKeeper。

HDFS

  • 开启Kerberos认证集群的样例工程目录“hdfs-example-security”。
  • 未开启Kerberos认证集群的样例工程目录为“hdfs-example-normal”。

HDFS文件操作的Java示例程序。

本工程主要给出了创建HDFS文件夹、写文件、追加文件内容、读文件和删除文件/文件夹等相关接口操作示例。

hdfs-c-example

HDFS C语言开发代码样例。

本示例提供了基于C语言的HDFS文件系统连接、文件操作如创建文件、读写文件、追加文件、删除文件等。

HetuEngine

  • 开启Kerberos认证集群的样例工程目录为“hetu-examples/hetu-examples-security”。
  • 未开启Kerberos认证集群的样例工程目录为“hetu-examples/hetu-examples-normal”。

通过不同方式连接HetuEngine的Java、Python示例程序。

通过HSFabric、HSBroker等连接方式,使用用户名和密码连接到HetuEngine,或通过KeyTab文件认证方式连接HetuEngine,组装对应的SQL发送到HetuEngine执行,完成对Hive数据源的增删改查操作。

Hive

hive-examples

hive-jdbc-example

Hive JDBC处理数据Java示例程序。

本工程使用JDBC接口连接Hive,在Hive中执行相关数据操作。使用JDBC接口实现创建表、加载数据、查询数据等功能,还可实现在同一个客户端进程内同时访问FusionInsight ZooKeeper和第三方的ZooKeeper。

hive-jdbc-example-multizk

hcatalog-example

Hive HCatalog处理数据Java示例程序。

使用HCatalog接口实现通过Hive命令行方式对MRS Hive元数据进行数据定义和查询操作。

python-examples

使用Python连接Hive执行SQL样例。

可实现使用Python对接Hive并提交数据分析任务。

python3-examples

使用Python3连接Hive执行SQL样例。

可实现使用Python3对接Hive并提交数据分析任务。

IoTDB

iotdb-examples

iotdb-flink-example

通过Flink访问IoTDB数据的示例程序,包括FlinkIoTDBSink和FlinkIoTDBSource。

FlinkIoTDBSink可实现通过Flink job将时序数据写入到IoTDB中。FlinkIoTDBSource则通过Flink job将时序数据从IoTDB读取出来并且打印。

iotdb-jdbc-example

IoTDB JDBC处理数据Java示例程序。

本示例演示了如何使用JDBC接口连接IoTDB,并执行IoTDB SQL语句。

iotdb-kafka-example

通过Kafka访问IoTDB数据的示例程序。

本示例演示了如何先将时序数据发送到Kafka,再使用多线程将数据写入到IoTDB中。

iotdb-session-example

IoTDB Session处理数据Java示例程序。

本示例演示了如何使用Session方式连接IoTDB,并执行IoTDB SQL语句。

iotdb-udf-exmaple

该样例程序介绍了如何实现一个简单的IoTDB自定义函数(UDF)。

Kafka

kafka-examples

Kafka流式数据的处理Java示例程序。

本工程基于Kafka Streams完成单词统计功能,通过读取输入Topic中的消息,统计每条消息中的单词个数,从输出Topic消费数据,然后将统计结果以Key-Value的形式输出。

Manager

manager-examples

FusionInsight Manager API接口调用示例。

本工程调用Manager API接口实现集群用户的创建、修改及删除等操作。

MapReduce

  • 开启Kerberos认证集群的样例工程目录“mapreduce-example-security”。
  • 未开启Kerberos认证集群的样例工程目录为“mapreduce-example-normal”。

MapReduce任务提交Java示例程序。

本工程提供了一个MapReduce统计数据的应用开发示例,实现数据分析、处理,并输出满足用户需要的数据信息。

另外以MapReduce访问HDFS、HBase、Hive为例,介绍如何编写MapReduce作业访问多个服务组件。帮助用户理解认证、配置加载等关键使用方式。

Oozie

  • 开启Kerberos认证集群的样例工程目录“oozie-examples/ooziesecurity-examples”。
  • 未开启Kerberos认证集群的样例工程目录为“oozie-examples/oozienormal-examples”。

OozieMapReduceExample

Oozie提交MapReduce任务示例程序。

本示例演示了如何通过Java API提交MapReduce作业和查询作业状态,对网站的日志文件进行离线分析。

OozieSparkHBaseExample

使用Oozie调度Spark访问HBase的示例程序。

OozieSparkHiveExample

使用Oozie调度Spark访问Hive的示例程序。

Spark

  • 开启Kerberos认证集群的样例工程目录“spark-examples/sparksecurity-examples”。
  • 未开启Kerberos认证集群的样例工程目录为“spark-examples/sparknormal-examples”。

SparkHbasetoCarbonJavaExample

Spark同步HBase数据到CarbonData的Java示例程序。

本示例工程中,应用将数据实时写入HBase,用于点查业务。数据每隔一段时间批量同步到CarbonData表中,用于分析型查询业务。

SparkHbasetoHbaseJavaExample

Spark从HBase读取数据再写入HBase的Java/Scala/Python示例程序。

本示例工程中,Spark应用程序实现两个HBase表数据的分析汇总。

SparkHbasetoHbasePythonExample

SparkHbasetoHbaseScalaExample

SparkHivetoHbaseJavaExample

Spark从Hive读取数据再写入到HBase的Java/Scala/Python示例程序。

本示例工程中,Spark应用程序实现分析处理Hive表中的数据,并将结果写入HBase表。

SparkHivetoHbasePythonExample

SparkHivetoHbaseScalaExample

SparkJavaExample

Spark Core任务的Java/Python/Scala/R示例程序。

本工程应用程序实现从HDFS上读取文本数据并计算分析。

SparkRExample示例不支持未开启Kerberos认证的集群。

SparkPythonExample

SparkScalaExample

SparkRExample

SparkLauncherJavaExample

使用Spark Launcher提交作业的Java/Scala示例程序。

本工程应用程序通过org.apache.spark.launcher.SparkLauncher类采用Java/Scala命令方式提交Spark应用。

SparkLauncherScalaExample

SparkOnHbaseJavaExample

Spark on HBase场景的Java/Scala/Python示例程序。

本工程应用程序以数据源的方式去使用HBase,将数据以Avro格式存储在HBase中,并从中读取数据以及对读取的数据进行过滤等操作。

SparkOnHbasePythonExample

SparkOnHbaseScalaExample

SparkOnHudiJavaExample

Spark on Hudi场景的Java/Scala/Python示例程序。

本工程应用程序使用Spark操作Hudi执行插入数据、查询数据、更新数据、增量查询、特定时间点查询、删除数据等操作。

SparkOnHudiPythonExample

SparkOnHudiScalaExample

SparkOnMultiHbaseScalaExample

Spark同时访问两个集群中的HBase的Scala示例程序。

本示例不支持未开启Kerberos认证的集群。

SparkSQLJavaExample

Spark SQL任务的Java/Python/Scala示例程序。

本工程应用程序实现从HDFS上读取文本数据并计算分析。

SparkSQLPythonExample

SparkSQLScalaExample

SparkStreamingKafka010JavaExample

Spark Streaming从Kafka接收数据并进行统计分析的Java/Scala示例程序。

本工程应用程序实时累加计算Kafka中的流数据,统计每个单词的记录总数。

SparkStreamingKafka010ScalaExample

SparkStreamingtoHbaseJavaExample010

Spark Streaming读取Kafka数据并写入HBase的Java/Scala/Python示例程序。

本工程应用程序每5秒启动一次任务,读取Kafka中的数据并更新到指定的HBase表中。

SparkStreamingtoHbasePythonExample010

SparkStreamingtoHbaseScalaExample010

SparkStructuredStreamingJavaExample

在Spark应用中,通过使用StructuredStreaming调用Kafka接口来获取单词记录,然后把单词记录分类统计,得到每个单词记录数。

SparkStructuredStreamingPythonExample

SparkStructuredStreamingScalaExample

SparkThriftServerJavaExample

通过JDBC访问Spark SQL的Java/Scala示例程序。

本示例中,用户自定义JDBCServer的客户端,使用JDBC连接来进行表的创建、数据加载、查询和删除。

SparkThriftServerScalaExample

StructuredStreamingADScalaExample

使用Structured Streaming,从kafka中读取广告请求数据、广告展示数据、广告点击数据,实时获取广告有效展示统计数据和广告有效点击统计数据,将统计结果写入kafka中。

StructuredStreamingStateScalaExample

在Spark结构流应用中,跨批次统计每个session期间发生了多少次event以及本session的开始和结束timestamp;同时输出本批次被更新状态的session。

SpringBoot(MRS 3.3.0及之后版本支持)

clickhouse-examples

clickhouse-rest-client-example

SpringBoot连接ClickHouse服务应用开发示例。

本示例中,包含了建立服务端连接、创建数据库、创建数据表、插入数据、查询数据等操作示例。

doris-examples

doris-rest-client-example

Doris数据读写操作的SpringBoot应用开发示例。

提供SpringBoot连接Doris的样例程序。

flink-examples

flink-dws-read-example

GaussDB(DWS) SpringBoot方式连接Flink服务的应用开发示例。

flink-dws-sink-example

hbase-examples

SpringBoot连接Phoenix应用开发示例。

提供SpringBoot连接HBase与Phoenix的样例程序。

hive-examples

hive-rest-client-example

SpringBoot连接Hive应用开发示例。

本工程使用SpringBoot方式连接Hive,在Hive中执行创建表、加载数据、查询数据、删除表等操作。

kafka-examples

SpringBoot连接Kafka实现Topic生产消费的应用开发示例。