# Hadoop-Centos7安裝和Hadoop存儲規劃的示例分析
## 前言
在大數據技術生態中,Hadoop作為核心分布式計算框架,其安裝部署和存儲規劃是構建穩定高效大數據平臺的基礎。本文將基于CentOS 7操作系統,詳細介紹Hadoop 3.x版本的集群安裝過程,并通過典型場景分析Hadoop存儲規劃的最佳實踐。
## 一、環境準備
### 1.1 硬件要求
| 節點類型 | 最低配置 | 推薦生產配置 |
|----------------|--------------------------|--------------------------|
| Master節點 | 4核CPU/8GB內存/100GB存儲 | 16核CPU/64GB內存/1TB SSD |
| Worker節點 | 4核CPU/8GB內存/500GB存儲 | 32核CPU/128GB內存/10TB HDD x 12 |
| 網絡 | 千兆以太網 | 萬兆以太網或InfiniBand |
### 1.2 軟件要求
```bash
# 基礎依賴檢查
yum install -y java-1.8.0-openjdk-devel ssh pdsh
java -version # 需顯示1.8.x版本
# 所有節點執行
hostnamectl set-hostname master # worker節點設為worker1,worker2等
echo "192.168.1.100 master
192.168.1.101 worker1
192.168.1.102 worker2" >> /etc/hosts
# Master節點執行
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 分發到Worker節點
for node in worker1 worker2; do
ssh-copy-id -i ~/.ssh/id_rsa.pub $node
done
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -xzvf hadoop-3.3.4.tar.gz -C /opt/
ln -s /opt/hadoop-3.3.4 /opt/hadoop
/etc/profile.d/hadoop.sh
文件內容:
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export HADOOP_HEAPSIZE_MAX=4g # 根據內存調整
<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>
# 首次啟動需格式化NameNode
hdfs namenode -format
# 啟動HDFS
start-dfs.sh
# 驗證服務
jps # 應顯示NameNode/DataNode進程
hdfs dfsadmin -report # 查看節點狀態
分層存儲策略:
容量規劃公式:
總需求容量 = 原始數據量 × (1 + 副本數) × (1 + 壓縮率) × (1 + 中間文件系數)
典型值:原始數據1PB → HDFS需3-5PB
<!-- hdfs-site.xml 優化配置 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/data1/hadoop/data,/data2/hadoop/data,/data3/hadoop/data</value>
</property>
<property>
<name>dfs.storage.policy.enabled</name>
<value>true</value>
</property>
存儲策略:
# 設置熱數據策略
hdfs storagepolicies -setStoragePolicy -path /user/activity_logs -policy HOT
# 冷數據歸檔
hdfs archive -archiveName logs.har -p /user/old_logs /archive
<!-- 啟用糾刪碼 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.ec.policies.enabled</name>
<value>true</value>
</property>
EC策略應用:
hdfs ec -enablePolicy -policy RS-6-3-1024k
hdfs ec -setPolicy -path /financial/raw_data -policy RS-6-3-1024k
磁盤配置最佳實踐: “`bash
mount -o remount,noatime /data*
# 調度器優化 echo deadline > /sys/block/sdb/queue/scheduler
2. **關鍵參數調優**:
```xml
<!-- yarn-site.xml -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>物理內存×0.8</value>
</property>
#!/bin/bash
# 檢查DataNode磁盤使用率
hdfs dfsadmin -report | grep "DFS Used%" | awk '{if($3 > 85) exit 1}'
# NameNode堆內存監控
jstat -gc $(jps | grep NameNode | awk '{print $1}') | awk '{print $3/$4*100}'
橫向擴展:
# 新節點加入集群
scp -r /opt/hadoop worker3:/opt/
hdfs dfsadmin -refreshNodes
縱向擴展:
<!-- 增加DataNode數據目錄 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/existing/path1,/existing/path2,/new/disk/path</value>
</property>
Java版本沖突:
alternatives --config java # 選擇正確版本
HDFS無法啟動:
# 檢查防火墻
systemctl stop firewalld
# 查看日志
tail -n 100 $HADOOP_HOME/logs/hadoop-*-namenode-*.log
磁盤空間不足:
# 臨時調整副本數
hdfs dfs -setrep -w 2 /path/to/data
數據均衡:
hdfs balancer -threshold 10
通過本文的實踐指導,讀者可以完成從零開始構建生產可用的Hadoop集群。需要特別注意的是,存儲規劃應當根據實際業務場景動態調整,建議定期使用hdfs dfs -du -h /
監控存儲使用情況,結合hadoop fsck /
檢查數據健康狀態。隨著業務增長,可考慮引入HDFS Federation實現命名空間擴展。
附錄:
1. Hadoop官方文檔
2. 推薦監控工具:Ganglia/Prometheus+Granfana
3. 版本兼容性矩陣:Hadoop 3.x要求JDK8+ “`
注:本文實際約3850字(含代碼和配置示例),完整實施時需根據實際硬件環境和業務需求調整參數。建議在測試環境驗證后再部署到生產環境。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。