Ubuntu集成Hadoop生態系統的完整步驟
在Ubuntu系統上集成Hadoop生態前,需完成以下基礎準備:
sudo apt update && sudo apt upgrade -y確保系統軟件包為最新版本;hadoop)并賦予sudo權限,增強安全性;ping命令測試連通性;ssh-keygen -t rsa,分發公鑰ssh-copy-id <節點IP>)。Hadoop依賴Java運行環境(JRE/JDK),推薦使用OpenJDK 8或11:
sudo apt install -y openjdk-11-jdk
java -version # 驗證安裝(需顯示Java版本信息)
配置JAVA_HOME環境變量(編輯~/.bashrc):
echo "export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64" >> ~/.bashrc
source ~/.bashrc
從Apache官網下載穩定版本的Hadoop(如3.3.6),解壓至指定目錄:
wget https://downloads.apache.org/hadoop/core/hadoop-3.3.6/hadoop-3.3.6.tar.gz
sudo tar -xzf hadoop-3.3.6.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop # 重命名便于管理
sudo chown -R hadoop:hadoop /usr/local/hadoop # 修改所有權(若使用專用用戶)
編輯~/.bashrc,添加Hadoop路徑配置:
echo "export HADOOP_HOME=/usr/local/hadoop" >> ~/.bashrc
echo "export PATH=\$PATH:\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin" >> ~/.bashrc
source ~/.bashrc # 使配置生效
Hadoop的主要配置文件位于$HADOOP_HOME/etc/hadoop目錄,需修改以下文件:
配置HDFS的默認文件系統地址:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> <!-- 單機模式用localhost;集群模式用主節點IP -->
</property>
</configuration>
配置HDFS的副本數(單機模式設為1,集群模式設為3)及數據存儲路徑:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/namenode</value> <!-- NameNode元數據存儲路徑 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</value> <!-- DataNode數據存儲路徑 -->
</property>
</configuration>
配置MapReduce框架為YARN(需先創建mapred-site.xml,可通過cp mapred-site.xml.template mapred-site.xml生成):
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置YARN的資源管理器及Shuffle服務:
<configuration>
<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.resourcemanager.hostname</name>
<value>localhost</value> <!-- 集群模式用主節點IP -->
</property>
</configuration>
首次啟動Hadoop前,需格式化HDFS(僅第一次需要,會清除原有數據):
hdfs namenode -format
依次啟動HDFS和YARN服務:
start-dfs.sh # 啟動HDFS(NameNode、DataNode)
start-yarn.sh # 啟動YARN(ResourceManager、NodeManager)
jps,若顯示NameNode、DataNode、ResourceManager、NodeManager等進程,說明啟動成功;http://localhost:9870(Hadoop 3.x版本);http://localhost:8088。Hadoop生態的核心組件(如Spark、Hive、HBase)可與Hadoop無縫集成,以下以Spark為例:
下載與Hadoop版本兼容的Spark預編譯包(如Spark 3.5.0支持Hadoop 3.x):
wget https://downloads.apache.org/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
sudo tar -xzf spark-3.5.0-bin-hadoop3.tgz -C /usr/local/
sudo mv /usr/local/spark-3.5.0-bin-hadoop3 /usr/local/spark
編輯~/.bashrc,添加Spark路徑:
echo "export SPARK_HOME=/usr/local/spark" >> ~/.bashrc
echo "export PATH=\$PATH:\$SPARK_HOME/bin" >> ~/.bashrc
source ~/.bashrc
運行Spark Shell,讀取HDFS中的文件:
spark-shell
scala> val data = sc.textFile("hdfs://localhost:9000/user/hadoop/test.txt")
scala> data.count() # 統計文件行數
localhost替換為各節點IP,并配置slaves文件(列出DataNode節點);