Spark、Flink读取HDFS文件

本文介绍使用Spark和Flink两种大数据处理框架读取HDFS文件的方法。通过具体的代码示例展示了如何配置环境、读取指定路径的文件,并进行简单的文本处理操作。

要读取文件的HDFS路径信息如下图
在这里插入图片描述
Spark读取HDFS文件代码示例如下

package demo
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object _00wcHDFS {
  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf
    conf.setMaster("local").setAppName("wc")
    val context: SparkContext = new SparkContext(conf)
    context.setLogLevel("error")
	//注意路径书写方式hdfs://   /flink...
    val sh: RDD[String] = context.textFile("hdfs:///flink/data/wc/submit.sh")
    val res: RDD[(String, Int)] = sh.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).filter(_._2>1)
    res.foreach(println)
  }

Flink读取HDFS文件代码示例如下

package demo
import org.apache.flink.api.scala._
import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment

object _01readHDFS {
  def main(args: Array[String]): Unit = {
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    //注意路径书写方式hdfs://   /flink...
    val textStream = env.readTextFile("hdfs:///flink/data/wc/submit.sh")
    textStream.flatMap(_.split(" ")).map((_,1)).keyBy(0).sum(1).print()
    //读完就停止
    env.execute()
  }
}
### 监控基于 SparkFlink 的大数据任务 监控大数据任务是确保数据处理流程稳定、高效运行的关键环节。SparkFlink 作为主流的大数据处理引擎,各自提供了丰富的监控工具和方法,以帮助开发者和运维人员实时掌握任务状态、性能瓶颈和资源使用情况。 #### Spark 任务监控工具和方法 Spark 提供了多种监控机制,包括内置的 Web UI、指标系统以及与外部监控工具的集成。 1. **Spark Web UI** Spark 自带了一个 Web UI,默认运行在 `http://<driver-node>:4040` 上,提供了任务执行的实时视图。该界面展示了作业的执行进度、任务调度信息、RDD 血缘关系、执行器状态等关键指标。 - **作业执行详情**:包括每个阶段的任务数量、执行时间、输入输出大小等。 - **Executor 信息**:显示每个 Executor 的内存使用、任务数量、GC 时间等。 - **Storage 信息**:展示缓存的 RDD 和数据块分布情况。 2. **Spark Metrics System** Spark 的 Metrics System 可以将运行时指标暴露给外部系统,支持多种输出方式,如 Console、JMX、CSV 文件、Graphite、Prometheus 等。通过配置 `spark.metrics.conf` 文件,可以灵活地定义哪些指标需要被收集和导出。 - **常用指标**:包括任务执行时间、Shuffle 读写量、Executor 内存使用、GC 时间等。 3. **与外部监控工具集成** - **Prometheus + Grafana**:通过 Prometheus 拉取 Spark 的 Metrics,使用 Grafana 进行可视化展示。 - **Ganglia**:适用于大规模集群的分布式监控系统,支持 Spark 指标收集。 - **ELK Stack(Elasticsearch + Logstash + Kibana)**:用于日志分析,帮助定位任务失败原因。 4. **Spark History Server** Spark 提供了 History Server,用于查看已完成作业的历史信息。它通过读取日志文件(通常存储在 HDFS 或本地磁盘)来重建作业执行过程,方便事后分析和调试。 5. **自定义监控脚本** 可以通过 Spark 的 REST API 获取任务状态和指标,结合自定义脚本实现自动化监控和告警。 #### Flink 任务监控工具和方法 Flink 作为一款专注于流处理的引擎,提供了更为丰富的监控功能,尤其是在实时性和状态管理方面具有优势。 1. **Flink Web UI** Flink 的 Web UI 默认运行在 `http://<jobmanager>:8081` 上,提供了任务执行的详细视图。 - **作业概览**:显示所有运行中的作业、已完成作业和失败作业的状态。 - **任务详情**:展示每个作业的 DAG 图、任务执行时间线、子任务状态、输入输出速率等。 - **Checkpoints 和 Savepoints**:展示检查点和保存点的状态、持续时间、大小等信息,帮助评估状态一致性。 2. **Flink Metrics System** Flink 支持将运行时指标暴露给多种监控系统,包括 JMX、Prometheus、Graphite、InfluxDB 等。通过配置 `metrics.reporter` 参数,可以指定使用的指标报告器。 - **常用指标**:包括任务延迟、吞吐量、反压情况、状态大小、Checkpoint 持续时间等。 3. **反压监控(Backpressure Monitoring)** Flink 提供了反压监控功能,可以检测任务中的瓶颈。通过 Web UI 或 REST API 查看各个子任务的反压状态,帮助识别数据流中的阻塞点。 4. **Checkpoint 和 Savepoint 状态监控** Flink 的 Checkpoint 机制用于保障状态一致性,可以通过 Web UI 查看 Checkpoint 的触发频率、持续时间、成功/失败次数等。Savepoint 用于手动保存状态,便于任务升级或迁移。 5. **与外部监控工具集成** - **Prometheus + Grafana**:广泛用于 Flink 的监控,支持丰富的指标可视化。 - **Alertmanager**:与 Prometheus 集成,实现自动告警。 - **ELK Stack**:用于日志分析,帮助定位任务失败原因。 6. **Flink REST API** Flink 提供了 REST API,允许开发者通过 HTTP 请求获取任务状态、指标、日志等信息,适用于自动化监控和告警系统的集成。 --- ### 示例:使用 Prometheus 和 Grafana 监控 Spark/Flink 任务 以下是一个简单的 Prometheus 配置示例,用于监控 SparkFlink 任务: ```yaml scrape_configs: - job_name: 'spark' static_configs: - targets: ['spark-driver:4040'] metrics_path: '/metrics' scheme: http - job_name: 'flink' static_configs: - targets: ['flink-jobmanager:8081'] metrics_path: '/metrics' scheme: http ``` 在 Grafana 中创建仪表板,选择 Prometheus 数据源后,可以添加以下查询示例: - **Spark Executor 内存使用**: ```promql spark_executor_memory_used_bytes ``` - **Flink 任务延迟**: ```promql flink_taskmanager_task_latency ``` - **Flink Checkpoint 持续时间**: ```promql flink_jobmanager_checkpoint_duration ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值