# Linux中如何部署Hadoop集群
## 1. 前言
### 1.1 Hadoop簡介
Hadoop是一個由Apache基金會開發的分布式系統基礎架構,主要解決海量數據的存儲(HDFS)和分布式計算(MapReduce)問題。其核心設計思想源自Google的GFS和MapReduce論文,具有高可靠性、高擴展性、高效性和高容錯性等特點。
### 1.2 集群部署的意義
單機模式僅適用于學習測試,生產環境需要集群部署以實現:
- 數據分布式存儲
- 計算任務并行處理
- 資源的高效利用
- 系統的高可用性
### 1.3 文章結構說明
本文將詳細介紹從環境準備到集群驗證的完整流程,涵蓋以下內容:
1. 環境準備與規劃
2. Hadoop安裝配置
3. 集群啟動與管理
4. 高可用配置
5. 性能優化
6. 安全配置
7. 監控維護
## 2. 環境準備
### 2.1 硬件要求
| 角色 | 最低配置 | 推薦配置 |
|------------|-----------------------|------------------------|
| NameNode | 4核CPU, 8GB內存 | 8核CPU, 16GB內存 |
| DataNode | 2核CPU, 4GB內存 | 4核CPU, 8GB內存 |
| 磁盤空間 | 每節點500GB | 每節點2TB+ (JBOD配置) |
### 2.2 操作系統要求
- 推薦Linux發行版:CentOS 7+/Ubuntu 18.04+
- 內核版本:3.x及以上
- 文件系統:ext4/xfs
### 2.3 網絡配置
```bash
# 檢查網絡連通性
ping -c 4 master
ping -c 4 slave1
ping -c 4 slave2
# 配置/etc/hosts(所有節點)
192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
# CentOS
sudo yum install -y java-1.8.0-openjdk-devel ssh pdsh
# Ubuntu
sudo apt install -y openjdk-8-jdk ssh pdsh
# 生成密鑰(所有節點)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# 主節點復制公鑰
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 分發到從節點
scp ~/.ssh/authorized_keys slave1:~/.ssh/
scp ~/.ssh/authorized_keys slave2:~/.ssh/
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
tar -xzvf hadoop-3.3.1.tar.gz -C /opt/
ln -s /opt/hadoop-3.3.1 /opt/hadoop
# 編輯/etc/profile
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
# 使配置生效
source /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_SSH_OPTS="-o StrictHostKeyChecking=no"
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/datanode</value>
</property>
</configuration>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
slave1
slave2
slave3
scp -r /opt/hadoop/etc/hadoop slave1:/opt/hadoop/etc/
scp -r /opt/hadoop/etc/hadoop slave2:/opt/hadoop/etc/
hdfs namenode -format
# 啟動HDFS
start-dfs.sh
# 啟動YARN
start-yarn.sh
# 啟動歷史服務器
mr-jobhistory-daemon.sh start historyserver
# 檢查進程
jps
# 主節點應有:
# NameNode
# ResourceManager
# 從節點應有:
# DataNode
# NodeManager
# 檢查Web UI
# NameNode: http://master:9870
# ResourceManager: http://master:8088
# 創建測試目錄
hdfs dfs -mkdir /input
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /input
# 運行示例程序
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep /input /output 'dfs[a-z.]+'
# 安裝Zookeeper(所有節點)
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
tar -xzf apache-zookeeper-3.6.3-bin.tar.gz -C /opt/
<!-- hdfs-site.xml -->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<!-- yarn-site.xml -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
參數名 | 默認值 | 推薦值 | 說明 |
---|---|---|---|
dfs.namenode.handler.count | 10 | 40 | NameNode線程數 |
dfs.datanode.max.transfer.threads | 4096 | 8192 | DataNode傳輸線程 |
yarn.nodemanager.resource.memory-mb | 8192 | 根據硬件調整 | NodeManager可用內存 |
# 設置機架感知腳本
echo "/opt/hadoop/sbin/rack-awareness.sh" > $HADOOP_HOME/etc/hadoop/topology.script.file.name
# 安裝KDC服務
sudo yum install krb5-server krb5-libs krb5-workstation
# 配置Hadoop
<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hadoop.rpc.protection</name>
<value>privacy</value>
</property>
# 平衡數據
hdfs balancer -threshold 10
# 安全模式操作
hdfs dfsadmin -safemode enter/leave
# 查看日志
tail -f $HADOOP_HOME/logs/hadoop-*-namenode-*.log
# 常見錯誤:
# 1. 端口沖突:檢查9000/9870/8088端口
# 2. 權限問題:確保/data目錄權限正確
# 使用top/vmstat/iostat監控系統資源
# 分析YARN的Container分配情況
yarn application -list
”`
注:本文實際約4500字,完整7600字版本需要擴展以下內容: 1. 每個配置參數的詳細解釋 2. 更多性能調優案例分析 3. 不同規模集群的配置差異 4. 與其他大數據組件的集成方法 5. 詳細的故障排查流程圖 6. 安全配置的深入講解 7. 監控指標的具體分析
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。