在Debian系統中集成Hadoop和Spark可以通過以下步驟完成:
Hadoop和Spark都需要Java環境,因此首先需要安裝Java。
sudo apt update
sudo apt install openjdk-11-jdk
驗證Java安裝:
java -version
從Apache Hadoop官方網站下載最新版本的Hadoop,并解壓到指定目錄。
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
tar -xzvf hadoop-3.3.1.tar.gz -C /usr/local/
重命名解壓后的目錄:
sudo mv /usr/local/hadoop-3.3.1 /usr/local/hadoop
配置Hadoop環境變量:
編輯/etc/profile文件,添加以下內容:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使環境變量生效:
source /etc/profile
編輯Hadoop配置文件,主要涉及core-site.xml、hdfs-site.xml和yarn-site.xml。
core-site.xml<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
yarn-site.xml<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
在首次啟動Hadoop之前,需要格式化HDFS。
hdfs namenode -format
啟動HDFS和YARN:
start-dfs.sh
start-yarn.sh
驗證Hadoop是否正常運行:
jps
你應該能看到NameNode、DataNode、SecondaryNameNode、ResourceManager和NodeManager等進程。
從Apache Spark官方網站下載最新版本的Spark,并解壓到指定目錄。
wget https://downloads.apache.org/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz
tar -xzvf spark-3.1.2-bin-hadoop3.2.tgz -C /usr/local/
重命名解壓后的目錄:
sudo mv /usr/local/spark-3.1.2-bin-hadoop3.2 /usr/local/spark
配置Spark環境變量:
編輯/etc/profile文件,添加以下內容:
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
使環境變量生效:
source /etc/profile
編輯Spark配置文件spark-defaults.conf,主要涉及spark.master和spark.executor.memory等參數。
cp $SPARK_HOME/conf/spark-defaults.conf.template $SPARK_HOME/conf/spark-defaults.conf
編輯spark-defaults.conf文件:
nano $SPARK_HOME/conf/spark-defaults.conf
添加以下內容:
spark.master yarn
spark.executor.memory 1g
spark.driver.memory 1g
啟動Spark Master和Worker:
start-master.sh
start-worker.sh spark://localhost:7077
驗證Spark是否正常運行:
jps
你應該能看到Master和Worker進程。
編寫一個簡單的Spark程序來測試Hadoop和Spark的集成。
創建一個Scala文件WordCount.scala:
import org.apache.spark.sql.SparkSession
object WordCount {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder()
.appName("WordCount")
.master("yarn")
.getOrCreate()
val textFile = spark.read.text("hdfs://localhost:9000/user/hadoop/input.txt")
val counts = textFile.rdd.flatMap(_.value.split(" "))
.map(word => (word, 1))
.reduceByKey(_ + _)
counts.saveAsTextFile("hdfs://localhost:9000/user/hadoop/output")
spark.stop()
}
}
編譯并打包Spark程序:
sbt package
將生成的JAR文件上傳到HDFS:
hdfs dfs -put target/scala-2.12/wordcount_2.12-1.0.jar /user/hadoop/wordcount.jar
運行Spark程序:
spark-submit --class WordCount /user/hadoop/wordcount.jar
檢查HDFS輸出目錄:
hdfs dfs -ls /user/hadoop/output
通過以上步驟,你可以在Debian系統中成功集成Hadoop和Spark,并運行一個簡單的Spark程序。