在文件存储HDFS版上使用 Apache Spark

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
简介: 本文档主要介绍如何在挂载文件存储HDFS版的 Hadoop 集群上安装及使用 Spark。

一 前言

本文档主要介绍如何在挂载文件存储HDFS版的 Hadoop 集群上安装及使用 Spark。


二 准备工作

  1. 开通文件存储HDFS版服务并创建文件系统实例和挂载点,详情请参见快速入门
  2. 在 Hadoop 集群所有节点上安装JDK。版本不能低于1.8。
  3. 下载 Apache Hadoop 压缩包,下载地址:官方链接。建议您选用的 Hadoop 版本不低于2.7.2,本文档中使用的 Hadoop 版本为 Apache Hadoop 2.7.2。
  4. 下载 Apache Spark 压缩包,下载地址:官方链接。本文档中使用的版本为官方提供的预编译版本 Apache Spark 2.4.8 。


三 配置 Hadoop

  1. 执行如下命令解压 Hadoop 压缩包到指定目录。
tar -zxf hadoop-2.7.2.tar.gz -C /usr/local/
  1. 修改 hadoop-env.sh 配置文件。
  • 执行如下命令打开 hadoop-env.sh 配置文件。
vim /usr/local/hadoop-2.7.2/etc/hadoop/hadoop-env.sh
  • 配置 JAVA_HOME 目录,如下所示。
exportJAVA_HOME=/usr/java/default
  1. 修改 core-site.xml 配置文件。
  • 执行如下命令打开 core-site.xml 配置文件。
vim /usr/local/hadoop-2.7.2/etc/hadoop/core-site.xml
  • 在 core-site.xml 配置文件中,配置如下信息,详情请参见挂载文件系统
<configuration>
    <property>
         <name>fs.defaultFS</name>
         <value>dfs://x-xxxxxxxx.cn-xxxxx.dfs.aliyuncs.com:10290</value>  
         <!-- 该地址填写您的挂载点地址 -->
    </property>
    <property>
         <name>fs.dfs.impl</name>
         <value>com.alibaba.dfs.DistributedFileSystem</value>
    </property>
    <property>
         <name>fs.AbstractFileSystem.dfs.impl</name>
         <value>com.alibaba.dfs.DFS</value>
    </property>
</configuration>
  1. 修改 yarn-site.xml 配置文件。
  • 执行如下命令打开 yarn-site.xml 配置文件。
vim /usr/local/hadoop-2.7.2/etc/hadoop/yarn-site.xml
  • 在 yarn-site.xml 配置文件中,配置如下信息。
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>xxxx</value>
        <!-- 该地址填写集群中resourcemanager的hostname -->
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>16384</value>
        <!-- 根据您当前的集群能力进行配置此项 -->
    </property>
    <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>4</value>
        <!-- 根据您当前的集群能力进行配置此项 -->
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-vcores</name>
        <value>4</value>
        <!-- 根据您当前的集群能力进行配置此项 -->
    </property>
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>3584</value>
        <!-- 根据您当前的集群能力进行配置此项 -->
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>14336</value>
        <!-- 根据您当前的集群能力进行配置此项 -->
    </property>
</configuration>
  1. 修改 slaves 配置文件。
  • 执行如下命令打开 slaves 配置文件。
vim /usr/local/hadoop-2.7.2/etc/hadoop/slaves
  • 在 slaves 配置文件中,配置集群计算节点的 hostname。
cluster-header-1
cluster-worker-1
  1. 配置环境变量。
  • 执行如下命令打开 /etc/profile 配置文件。
vim /etc/profile
  • 在 /etc/profile 配置文件中,配置 HADOOP_HOME 。
exportHADOOP_HOME=/usr/local/hadoop-2.7.2
exportHADOOP_CLASSPATH=$HADOOP_CLASSPATH:$($HADOOP_HOME/bin/hadoop classpath)exportHADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
exportPATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
  • 执行如下命令使配置生效。
source /etc/profile
  1. 配置文件存储HDFS版的Java SDK。

您可以单击此处,下载文件存储HDFS版最新的Java SDK,将其部署在Hadoop生态系统组件的CLASSPATH上,详情请参见挂载文件系统

cp aliyun-sdk-dfs-x.y.z.jar  /usr/local/hadoop-2.7.2/share/hadoop/hdfs
  1. 执行如下命令将${HADOOP_HOME}文件夹同步到集群的其他节点的相同目录下,并按照本章节步骤 6 对集群其他节点配置 Hadoop 的环境变量。
scp -r hadoop-2.7.2/ root@cluster-worker-1:/usr/local/


四 验证 Hadoop 配置

完成 Hadoop 配置后,不需要格式化 NameNode,也不需要使用 start-dfs.sh 来启动 HDFS 相关服务。在 ResourceManager 节点启动 Yarn 服务,验证 Hadoop 配置成功的方法请参见文档:验证安装。


五 配置 Spark

  1. 执行如下命令解压 Spark 压缩包到指定目录。
tar -zxf spark-2.4.8-bin-hadoop2.7.tgz -C /usr/local/
  1. 将文件存储HDFS版 Java SDK 放到 Spark 的 jars 目录下。
cp aliyun-sdk-dfs-x.y.z.jar /usr/local/spark-2.4.8-bin-hadoop2.7/jars/
  1. 注意事项
  • 如果您需要对 Spark 进行额外的配置,请参考官方文档:配置操作指南


六 验证 Spark 配置

读取文件存储HDFS版上的数据进行 WordCount 计算并将结果写到文件存储HDFS上。

## 请将下方文档中的 f-xxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com 替换为您的挂载点## 在文件存储HDFS版上生成测试数据hadoop jar ${HADOOP_HOME}/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar \
randomtextwriter \
-D mapreduce.randomtextwriter.totalbytes=10240 \
-D mapreduce.randomtextwriter.bytespermap=1024 \
dfs://f-xxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/input
## 启动 spark-shell 执行 WordCount${SPARK_HOME}/bin/spark-shell --master yarn
scala> val res = sc.textFile("dfs://f-xxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/input").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)
scala> res.collect.foreach(println)
scala> res.saveAsTextFile("dfs://f-xxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/output")
## 查看写入文件存储HDFS版的结果数据hadoop fs -ls dfs://f-xxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/output


了解更多关于文件存储HDFS版的产品信息,欢迎访问https://www.aliyun.com/product/alidfs

如果您对文件存储HDFS版有任何问题,欢迎钉钉扫描以下二维码加入文件存储HDFS版技术交流群。


目录
相关文章
|
27天前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
115 6
|
16天前
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
28 1
|
3月前
|
存储 分布式计算 资源调度
Hadoop生态系统概览:从HDFS到Spark
【8月更文第28天】Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。它由多个组件构成,旨在提供高可靠性、高可扩展性和成本效益的数据处理解决方案。本文将介绍Hadoop的核心组件,包括HDFS、MapReduce、YARN,并探讨它们如何与现代大数据处理工具如Spark集成。
173 0
|
4月前
|
分布式计算 大数据 Spark
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
《Spark大数据处理:技术、应用与性能优化》深入浅出介绍Spark核心,涵盖部署、实战与性能调优,适合初学者。作者基于微软和IBM经验,解析Spark工作机制,探讨BDAS生态,提供实践案例,助力快速掌握。书中亦讨论性能优化策略。[PDF下载链接](https://zhangfeidezhu.com/?p=347)。![Spark Web UI](https://img-blog.csdnimg.cn/direct/16aaadbb4e13410f8cb2727c3786cc9e.png#pic_center)
143 1
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
|
3月前
|
分布式计算 Hadoop 大数据
大数据处理框架在零售业的应用:Apache Hadoop与Apache Spark
【8月更文挑战第20天】Apache Hadoop和Apache Spark为处理海量零售户数据提供了强大的支持
61 0
|
3月前
|
分布式计算 Serverless 数据处理
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
193 0
|
4月前
|
分布式计算 Apache Spark
|
5月前
|
分布式计算 大数据 数据处理
Apache Spark在大数据处理中的应用
Apache Spark是大数据处理的热门工具,由AMPLab开发并捐赠给Apache软件基金会。它以内存计算和优化的执行引擎著称,提供比Hadoop更快的处理速度,支持批处理、交互式查询、流处理和机器学习。Spark架构包括Driver、Master、Worker Node和Executor,核心组件有RDD、DataFrame、Dataset、Spark SQL、Spark Streaming、MLlib和GraphX。文章通过代码示例展示了Spark在批处理、交互式查询和实时数据处理中的应用,并讨论了其优势(高性能、易用性、通用性和集成性)和挑战。【6月更文挑战第11天】
128 6
|
5月前
|
消息中间件 分布式计算 关系型数据库
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
|
5月前
|
消息中间件 分布式计算 Kafka
利用Spark将Kafka数据流写入HDFS
利用Spark将Kafka数据流写入HDFS

相关实验场景

更多

推荐镜像

更多