0
点赞
收藏
分享

微信扫一扫

yarn-per-job flink 名称

英乐 2023-07-15 阅读 55

实现"yarn-per-job flink 名称"的步骤

为了实现"yarn-per-job flink 名称",我们需要按照以下步骤进行操作。首先,让我们先了解一下这个概念:

[yarn-per-job]( 是 Apache Flink 中一种运行模式。在这种模式下,每个 Flink 作业将在 YARN 上启动一个新的应用程序。这种模式适用于小型或短期的作业,可以更好地控制资源的使用和分配。

下面是实现"yarn-per-job flink 名称"的步骤:

步骤 操作
1 编写 Flink 作业代码
2 构建 Flink 作业 Jar 文件
3 上传 Jar 文件到 HDFS
4 提交作业到 YARN
5 监控作业执行情况

接下来,让我们详细说明每个步骤需要做什么以及相应的代码:

1. 编写 Flink 作业代码

首先,我们需要编写一个 Flink 作业的代码。这里假设你已经熟悉 Flink 编程模型,知道如何编写一个简单的 Flink 作业。我们以一个简单的 Word Count 作业为例,代码如下:

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;

public class WordCountJob {

    public static void main(String[] args) throws Exception {
        // 创建执行环境
        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        // 读取数据源
        DataStream<String> text = env.socketTextStream("localhost", 9999);

        // 单词拆分
        DataStream<Tuple2<String, Integer>> counts = text
                .flatMap(new Tokenizer())
                .keyBy(0)
                .sum(1);

        // 打印结果
        counts.print();

        // 执行作业
        env.execute("Word Count Job");
    }

    public static final class Tokenizer implements FlatMapFunction<String, Tuple2<String, Integer>> {
        @Override
        public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {
            // 拆分单词并输出
            String[] words = value.toLowerCase().split("\\W+");
            for (String word : words) {
                if (word.length() > 0) {
                    out.collect(new Tuple2<>(word, 1));
                }
            }
        }
    }
}

2. 构建 Flink 作业 Jar 文件

完成作业代码编写后,我们需要将代码打包成一个可执行的 Jar 文件。在 Maven 项目中,可以使用 Maven 的插件来完成打包操作。在 pom.xml 文件中添加以下配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.example.WordCountJob</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

运行以下 Maven 命令构建 Jar 文件:

mvn clean package

3. 上传 Jar 文件到 HDFS

将构建好的 Jar 文件上传到 HDFS 中,以便在 YARN 上提交作业。可以使用以下命令将 Jar 文件上传到 HDFS:

hdfs dfs -put target/wordcountjob.jar /flink/j
举报

相关推荐

0 条评论