天天看點

在檔案存儲HDFS版上使用 Apache Spark一 前言二 準備工作三 配置 Hadoop四 驗證 Hadoop 配置五 配置 Spark六 驗證 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 目錄,如下所示。
export JAVA_HOME=/usr/java/default      
  1. 修改 core-site.xml 配置檔案。
    • 執行如下指令打開 core-site.xml 配置檔案。
vim /usr/local/hadoop-2.7.2/etc/hadoop/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 。
export HADOOP_HOME=/usr/local/hadoop-2.7.2
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$($HADOOP_HOME/bin/hadoop classpath)
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$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 配置

讀取檔案存儲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版上使用 Apache Spark一 前言二 準備工作三 配置 Hadoop四 驗證 Hadoop 配置五 配置 Spark六 驗證 Spark 配置

了解更多關于檔案存儲HDFS版的産品資訊,歡迎通路

https://www.aliyun.com/product/alidfs

如果您對檔案存儲HDFS版有任何問題,歡迎釘釘掃描以下二維碼加入檔案存儲HDFS版技術交流群。

在檔案存儲HDFS版上使用 Apache Spark一 前言二 準備工作三 配置 Hadoop四 驗證 Hadoop 配置五 配置 Spark六 驗證 Spark 配置