Alluxio
ProductsLanguageHome
  • Alluxio概览
  • 用户指南
    • 快速上手指南
    • 架构
    • FAQ
    • 作业服务器
    • 应用场景
  • 核心功能
    • 缓存
    • 统一命名空间
  • 部署 Alluxio
    • 在Kubernetes上部署Alluxio
    • 本地运行Alluxio
    • 在集群上独立运行Alluxio
    • 在Docker上运行Alluxio
    • 在具有HA的群集上部署Alluxio
    • 使用Docker部署AlluxioFuse加速深度学习训练(试验)
    • 基本要求
  • 云源生
    • Tencent EMR
  • 计算应用
    • Apache Spark
    • Presto
    • Spark on Kubernetes
    • Apache Flink
    • Apache Hadoop MapReduce
    • Presto on Iceberg (Experimental)
    • Trino
    • Apache Hive
    • 深度学习框架
    • Tensorflow
  • 底层存储系统
    • Alluxio集成Amazon AWS S3作为底层存储
    • Alluxio集成GCS作为底层存储
    • Alluxio集成Azure Blob Store作为底层存储
    • Azure Data Lake Storage Gen2
    • Azure 数据湖存储
    • Alluxio集成HDFS作为底层存储
    • Alluxio集成COS作为底层存储
    • Alluxio集成COSN作为底层存储
    • Alluxio集成Ceph Object Storage作为底层存储
    • Alluxio集成NFS作为底层存储
    • Alluxio集成Kodo作为底层存储
    • Alluxio集成Swift作为底层存储
    • Alluxio集成WEB作为底层存储
    • Alluxio集成Minio作为底层存储
    • 阿里云对象存储服务
    • Alluxio集成Ozone作为底层存储
    • Alluxio集成CephFS作为底层存储
  • 安全设置
    • 安全性
  • 运维指南
    • 配置项设置
    • 命令行接口
    • 管理员命令行接口
    • Web界面
    • 日志
    • 度量指标系统
    • 远程记录日志
  • 管理
    • 升级
    • 异常诊断与调试
  • APIs
    • Filesystem API
    • S3 Client
    • POSIX API
    • REST API
    • Python Client
    • 兼容Hadoop的Java
    • Go 客户端
  • 开发者资源
    • 编译Alluxio源代码
    • 开发指南
    • 代码规范
    • 如何开发单元测试
    • 文档规范
  • 参考
    • 配置项列表
    • List of Metrics
  • REST API
    • Master REST API
    • Worker REST API
    • Proxy REST API
    • Job REST API
  • Javadoc
Powered by GitBook
On this page
  • 初始化设置
  • 编译Alluxio客户端
  • 配置Hadoop
  • 分发Alluxio客户端Jar包
  • 在本地模式的Alluxio上运行Hadoop wordcount
  1. 计算应用

Apache Hadoop MapReduce

Last updated 6 months ago

该文档介绍如何让Alluxio与Apache Hadoop MapReduce一起运行,从而让你轻松地运行文件存储在Alluxio上的MapReduce程序。

初始化设置

该文档的先决条件包括:

  • 你已安装了Java。

  • 你已经按照这些文档建立了一个Alluxio集群: 或。

  • 为了运行一些简单的map-reduce实例,我们也推荐你下载根据你的hadoop版本对应的,或者如果你正在使用Hadoop 1,下载这个。

编译Alluxio客户端

为了使MapReduce应用可以与Alluxio进行通信,你需要将Alluxio Client的Jar包包含在MapReduce的classpaths中。我们建议你从Alluxio 下载压缩包。

同时,高级用户可以选择使用源代码来编译生成Alluxio Client的Jar包。 你可以运行以下命令。

新的Alluxio客户端Jar包可以在{{site.ALLUXIO_CLIENT_JAR_PATH}}中发现。

配置Hadoop

将以下两个属性添加到Hadoop的安装目录下的core-site.xml文件中:

<property>
  <name>fs.alluxio.impl</name>
  <value>alluxio.hadoop.FileSystem</value>
  <description>The Alluxio FileSystem (Hadoop 1.x and 2.x)</description>
</property>
<property>
  <name>fs.AbstractFileSystem.alluxio.impl</name>
  <value>alluxio.hadoop.AlluxioFileSystem</value>
  <description>The Alluxio AbstractFileSystem (Hadoop 2.x)</description>
</property>

该配置让你的MapReduce作用在输入和输出文件中通过Alluxio scheme alluxio:// 来识别URIs。

其次, 在conf目录中hadoop-env.sh文件中修改$HADOOP_CLASSPATH:

$ export HADOOP_CLASSPATH={{site.ALLUXIO_CLIENT_JAR_PATH}}:${HADOOP_CLASSPATH}

该配置确保Alluxio客户端jar包是利用的,对于通过Alluxio的URIs来创建和提交作业进行交互的MapReduce作业客户端。

分发Alluxio客户端Jar包

为了让MapRedude应用在Alluxio上读写文件,Alluxio客户端Jar包必须被分发到不同节点的应用相应的classpaths中。

1.使用-libjars命令行选项

你可以在使用hadoop jar ...的时候加入-libjars命令行选项,指定{{site.ALLUXIO_CLIENT_JAR_PATH}}为-libjars的参数。这条命令会把该Jar包放到Hadoop的DistributedCache中,使所有节点都可以访问到。例如,下面的命令就是将Alluxio客户端Jar包添加到-libjars选项中。

$ ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount \
-libjars {{site.ALLUXIO_CLIENT_JAR_PATH}} <INPUT FILES> <OUTPUT DIRECTORY>

有时候,你还需要设置环境变量HADOOP_CLASSPATH,让Alluxio客户端在运行hadoop jar命令时创建的客户端JVM可以使用jar包:

$ export HADOOP_CLASSPATH={{site.ALLUXIO_CLIENT_JAR_PATH}}:${HADOOP_CLASSPATH}

2.手动将Client Jar包分发到所有节点

为了在每个节点安装Alluxio,将客户端jar包{{site.ALLUXIO_CLIENT_JAR_PATH}}置于每个MapReduce节点的$HADOOP_HOME/lib(由于版本不同也可能是$HADOOP_HOME/share/hadoop/common/lib),然后重新启动Hadoop。 另一种选择,在你的Hadoop部署中,把这个jar包添加到mapreduce.application.classpath系统属性,确保jar包在classpath上。 为了在每个节点上安装Alluxio,将客户端Jar包mapreduce.application.classpath,该方法要注意的是所有Jar包必须再次安装,因为每个Jar包都更新到了最新版本。另一方面,当该Jar包已经在每个节点上的时候,就没有必要使用-libjars命令行选项了。

在本地模式的Alluxio上运行Hadoop wordcount

为了方便,我们假设是伪分布式的集群,通过运行如下命令启动(根据hadoop的版本,你可能需要把./bin换成./sbin):

$ cd $HADOOP_HOME
$ ./bin/stop-all.sh
$ ./bin/start-all.sh

以本地模式启动Alluxio:

$ ./bin/alluxio-start.sh local SudoMount

你可以在Alluxio中加入两个简单的文件来运行wordcount。在你的Alluxio目录中运行:

$ ./bin/alluxio fs copyFromLocal LICENSE /wordcount/input.txt

该命令将LICENSE文件复制到Alluxio的文件命名空间中,并指定其路径为/wordcount/input.txt。

现在我们运行一个用于wordcount的MapReduce作业。

$ ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount \
-libjars {{site.ALLUXIO_CLIENT_JAR_PATH}} \
alluxio://localhost:19998/wordcount/input.txt \
alluxio://localhost:19998/wordcount/output

作业完成后,wordcount的结果将存在Alluxio的/wordcount/output目录下。你可以通过运行如下命令来查看结果文件:

$ ./bin/alluxio fs ls /wordcount/output
$ ./bin/alluxio fs cat /wordcount/output/part-r-00000

这篇文档介绍了分发Jar包的多种方式。文档中建议通过使用命令行的-libjars选项,使用分布式缓存来分发Alluxio客户端Jar包。另一种分发客户端Jar包的方式就是手动将其分发到Hadoop节点上。下面就是这两种主流方法的介绍:

如何从Cloudera上加入第三方库
本地模式
集群模式
map-reduce examples jar
examples jar
download page
编译Alluxio源代码