在文件存儲 HDFS 版上使用Apache Spark
本文主要介紹如何在掛載文件存儲 HDFS 版的Hadoop集群上安裝及使用Apache Spark。
前提條件
已開通文件存儲 HDFS 版服務(wù)并創(chuàng)建文件系統(tǒng)實(shí)例和掛載點(diǎn)。具體操作,請參見文件存儲HDFS版快速入門。
已為Hadoop集群所有節(jié)點(diǎn)安裝JDK,且JDK版本不低于1.8。
已下載Apache Hadoop壓縮包。建議您選用的Hadoop版本不低于2.7.2,本文使用的Hadoop版本為Apache Hadoop 2.7.2。
已下載Scala壓縮包。本文使用的Scala版本為2.12.11。
已下載Apache Spark壓縮包。 本文使用的Apache Spark版本為2.4.8。
步驟一:配置Hadoop
執(zhí)行以下命令解壓Hadoop壓縮包到指定目錄。
#請根據(jù)實(shí)際情況替換/usr/local/ tar -zxf hadoop-2.7.2.tar.gz -C /usr/local/
修改hadoop-env.sh配置文件。
執(zhí)行以下命令打開hadoop-env.sh配置文件。
vim /usr/local/hadoop-2.7.2/etc/hadoop/hadoop-env.sh
配置JAVA_HOME目錄,如下所示。
export JAVA_HOME=/usr/java/default
修改core-site.xml配置文件。
執(zhí)行以下命令打開core-site.xml配置文件。
vim /usr/local/hadoop-2.7.2/etc/hadoop/core-site.xml
在core-site.xml配置文件中,配置如下信息。更多信息,請參見掛載文件存儲 HDFS 版文件系統(tǒng)。
<configuration> <property> <name>fs.defaultFS</name> <value>dfs://x-xxxxxxxx.cn-xxxxx.dfs.aliyuncs.com:10290</value> <!-- 該地址填寫您的掛載點(diǎn)地址 --> </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>
修改yarn-site.xml配置文件。
執(zhí)行如下命令打開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> <!-- 根據(jù)您當(dāng)前的集群能力進(jìn)行配置此項(xiàng) --> </property> <property> <name>yarn.nodemanager.resource.cpu-vcores</name> <value>4</value> <!-- 根據(jù)您當(dāng)前的集群能力進(jìn)行配置此項(xiàng) --> </property> <property> <name>yarn.scheduler.maximum-allocation-vcores</name> <value>4</value> <!-- 根據(jù)您當(dāng)前的集群能力進(jìn)行配置此項(xiàng) --> </property> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>3584</value> <!-- 根據(jù)您當(dāng)前的集群能力進(jìn)行配置此項(xiàng) --> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>14336</value> <!-- 根據(jù)您當(dāng)前的集群能力進(jìn)行配置此項(xiàng) --> </property> </configuration>
修改slaves配置文件。
執(zhí)行如下命令打開slaves配置文件。
vim /usr/local/hadoop-2.7.2/etc/hadoop/slaves
在slaves配置文件中,配置集群計(jì)算節(jié)點(diǎn)的Hostname。
cluster-header-1
cluster-worker-1
配置環(huán)境變量。
執(zhí)行如下命令打開/etc/profile配置文件。
vim /etc/profile
在/etc/profile配置文件中,配置HADOOP_HOME。
export HADOOP_HOME=/usr/local/hadoop-2.7.2 export HADOOP_CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath) export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
執(zhí)行如下命令使配置生效。
source /etc/profile
配置文件存儲 HDFS 版的Java SDK。
您可以下載最新的文件存儲 HDFS 版的Java SDK,將其部署在Hadoop生態(tài)系統(tǒng)組件的CLASSPATH上,具體操作,請參見掛載文件存儲 HDFS 版文件系統(tǒng)。
cp aliyun-sdk-dfs-x.y.z.jar /usr/local/hadoop-2.7.2/share/hadoop/hdfs
說明x.y.z為Java SDK版本號,請根據(jù)實(shí)際情況替換。
執(zhí)行如下命令將${HADOOP_HOME}文件夾同步到集群的其他節(jié)點(diǎn)的相同目錄下,并按照步驟6對集群其他節(jié)點(diǎn)配置Hadoop的環(huán)境變量。
scp -r hadoop-2.7.2/ hadoop@cluster-worker-1:/usr/local/
步驟二:驗(yàn)證Hadoop配置
完成Hadoop配置后,不需要格式化NameNode,也不需要使用start-dfs.sh來啟動HDFS相關(guān)服務(wù)。如需使用YARN服務(wù),只需在ResourceManager節(jié)點(diǎn)啟動YARN服務(wù)。具體驗(yàn)證Hadoop配置成功的方法,請參見驗(yàn)證安裝。
步驟三:配置Scala
執(zhí)行如下命令解壓Scala壓縮包到指定目錄。
#請根據(jù)實(shí)際情況替換/usr/local/ tar -zxf scala-2.12.11.tgz -C /usr/local
配置環(huán)境變量。
執(zhí)行如下命令打開/etc/profile配置文件。
vim /etc/profile
在/etc/profile配置文件中,配置SCALA_HOME。
export SCALA_HOME=/usr/local/scala-2.12.11 export PATH=$PATH:${SCALA_HOME}/bin
執(zhí)行如下命令使配置生效。
source /etc/profile
執(zhí)行如下命令驗(yàn)證scalap配置是否成功
scala -version scala
如果返回如下信息,則表示配置Scala成功。
步驟四:配置Apache Spark
執(zhí)行如下命令解壓Apache Spark壓縮包到指定目錄。
tar -zxf spark-2.4.8-bin-hadoop2.7.tgz -C /usr/local/
將文件存儲 HDFS 版Java SDK放到Spark的jars目錄下。
cp aliyun-sdk-dfs-x.y.z.jar /usr/local/spark-2.4.8-bin-hadoop2.7/jars
說明如果您還需要對Spark進(jìn)行額外配置。具體操作,請參見Spark官方文檔。
步驟五:驗(yàn)證Apache Spark配置
使用Spark讀取文件存儲 HDFS 版上面的文件進(jìn)行WordCount計(jì)算,并將計(jì)算結(jié)果寫入文件存儲 HDFS 版。
執(zhí)行以下命令,在文件存儲 HDFS 版上生成測試數(shù)據(jù)。
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
說明f-xxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com
為文件存儲 HDFS 版掛載點(diǎn)地址,請根據(jù)實(shí)際情況替換。啟動spark-shell執(zhí)行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")
執(zhí)行以下命令,查看寫入文件存儲 HDFS 版的結(jié)果數(shù)據(jù)。
hadoop fs -ls dfs://f-xxxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/output
如果返回以下信息,則表示配置Apache Spark成功。