在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程序。