好程式設計師大資料培訓分享Hadoop分散式叢集
好程式設計師大資料培訓分享 Hadoop 分散式叢集 的詳細介紹,首先Hadoop 的搭建有三種方式,單機版適合開發除錯 ; 偽分散式版,適合模擬叢集學習 ; 完全分散式,生產使用的模式。這篇檔案介紹如何搭建完全分散式的 hadoop 叢集,一個主節點,三個資料節點為例來講解。
基礎環境
環境準備
1 、軟體版本
四臺伺服器配置,系統:centos6.5 、記憶體: 1G (視自己配置而定)、硬碟: 20G (視自己配置而定)
四臺伺服器分配的IP 地址:
192.168.10.131
192.168.10.132
192.168.10.133
192.168.10.134
規劃:131 用作主節點用作 master ,其它三臺為資料節點 132 、 133 、 134 用作 salve1~3
jdk 和生成保持一致使用 1.8 版本
hadoop 使用 2.7.3 版本
2 、 host 配置和主機名 ( 四臺 )
修改四臺伺服器的hosts 檔案
vim /etc/hosts
192.168.10.131 master
192.168.10.132 slave1
192.168.10.133 slave2
192.168.10.134 slave3
分別斯塔伺服器的主機名:HOSTNAME , master 為例說明
vi /etc/sysconfig/network
HOSTNAME=master
執行reboot 後生效,完成之後依次修改其它 salve 伺服器為: slave1~3 。
3 、伺服器安裝 jdk( 四臺 )
建議使用yum 安裝 jdk, 也可以自行下載安裝
yum -y install java-1.8.0-openjdk*
配置環境變數,修改配置檔案vim/etc/profile
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使用souce 命令讓立刻生效
source /etc/profile
免密登陸
一、首先關閉四臺伺服器的防火牆和SELINUX
檢視防火牆狀態
service iptables status
關閉防火牆
service iptables stop
chkconfig iptables off
關閉SELINUX 後,需要重啟伺服器
—關閉 SELINUX
# vim /etc/selinux/config
—註釋掉
#SELINUX=enforcing
#SELINUXTYPE=targeted
—新增
SELINUX=disabled
二、免密碼登入本機
下面以配置master 本機無密碼登入為例進行講解,使用者需參照下面步驟完成 salve1~3 三臺子節點機器的本機無密碼登入 ;
1) 生產秘鑰
ssh-keygen -t rsa
2) 將公鑰追加到” authorized_keys ”檔案
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3) 賦予許可權
chmod 600 .ssh/authorized_keys
4) 驗證本機能無密碼訪問
ssh master
最後,依次配置salve1~3 無密碼訪問
二、master 本機無密碼登入 slave1 、 slave2 、 slave3 ,以 master 無密碼登入 slave1 為例進行講解:
1) 登入 slave1 ,複製 master 伺服器的公鑰” id_rsa.pub ”到 slave1 伺服器的” root ”目錄下。
scp root@master:/root/.ssh/id_rsa.pub /root/
2) 將 master 的公鑰 (id_rsa.pub) 追加到 slave1 的 authorized_keys 中
cat id_rsa.pub >> .ssh/authorized_keys
rm -rf id_rsa.pub
3) 在 master 上面測試
ssh slave1
三、配置slave1~slave3 本機無密碼登入 master
下面以slave1 無密碼登入 master 為例進行講解,使用者需參照下面步驟完成 slave2~slave3 無密碼登入 master 。
1) 登入 master ,複製 slave1 伺服器的公鑰” id_rsa.pub ”到 master 伺服器的” /root/ ”目錄下。
scp root@slave1:/root/.ssh/id_rsa.pub /root/
2) 將 slave1 的公鑰 (id_rsa.pub) 追加到 master 的 authorized_keys 中。
cat id_rsa.pub >> .ssh/authorized_keys
rm -rf id_rsa.pub // 刪除 id_rsa.pub
3) 在 slave1 上面測試
ssh master
依次配置slave2 、 slave3
到此主從的無密登入已經完成了。
Hadoop 環境搭建
配置master 的 hadoop 環境
1 、 master 上解壓縮安裝包及建立基本目錄
# 下載
wget
# 解壓
tar -xzvf hadoop-2.7.3.tar.gz -C /usr/local
# 重新命名
mv hadoop-2.7.3 hadoop
2 、配置 master 的 hadoop 環境變數
1) 配置環境變數,修改配置檔案 vi/etc/profile
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
使得hadoop 命令在當前終端立即生效
source /etc/profile
下面配置,檔案都在:/usr/local/hadoop/etc/hadoop 路徑下
2 、配置 core-site.xml
修改Hadoop 核心配置檔案 /usr/local/hadoop/etc/hadoop/core-site.xml ,透過 fs.default.name 指定 NameNode 的 IP 地址和埠號,透過 hadoop.tmp.dir 指定 hadoop 資料儲存的臨時資料夾。
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
特別注意:如沒有配置hadoop.tmp.dir 引數,此時系統預設的臨時目錄為: /tmp/hadoo-hadoop 。而這個目錄在每次重啟後都會被刪除,必須重新執行 format 才行,否則會出錯。
3 、配置 hdfs-site.xml :
修改HDFS 核心配置檔案 /usr/local/hadoop/etc/hadoop/hdfs-site.xml ,透過 dfs.replication 指定 HDFS 的備份因子為 3 ,透過 dfs.name.dir 指定 namenode 節點的檔案儲存目錄,透過 dfs.data.dir 指定 datanode 節點的檔案儲存目錄。
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
</configuration>
4 、配置 mapred-site.xml
複製mapred-site.xml.template 為 mapred-site.xml ,在進行修改
cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
vim /usr/local/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>
</property>
</configuration>
5 、配置 yarn-site.xml
<configuration>
<! – Site specific YARN configuration properties – >
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
6 、配置 masters 檔案
修改/usr/local/hadoop/etc/hadoop/masters 檔案,該檔案指定 namenode 節點所在的伺服器機器。刪除 localhost ,新增 namenode 節點的主機名 master; 不建議使用 IP 地址,因為 IP 地址可能會變化,但是主機名一般不會變化。
vi /usr/local/hadoop/etc/hadoop/masters
## 內容
master
7 、配置 slaves 檔案 (Master 主機特有 )
修改/usr/local/hadoop/etc/hadoop/slaves 檔案,該檔案指定哪些伺服器節點是 datanode 節點。刪除 locahost ,新增所有 datanode 節點的主機名,如下所示。
vi /usr/local/hadoop/etc/hadoop/slaves
## 內容
slave1
slave2
slave3
配置hadoop-slave 的 hadoop 環境
下面以配置slave1 的 hadoop 為例進行演示,使用者需參照以下步驟完成其他 slave2~3 伺服器的配置。
1) 複製 hadoop 到 slave1 節點
scp -r /usr/local/hadoop slave1:/usr/local/
登入slave1 伺服器,刪除 slaves 內容
rm -rf /usr/local/hadoop/etc/hadoop/slaves
2) 配置環境變數
vi /etc/profile
## 內容
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
使得hadoop 命令在當前終端立即生效 ;
source /etc/profile
依次配置其它slave 服務
啟動叢集
1 、格式化 HDFS 檔案系統
進入master 的 ~/hadoop 目錄,執行以下操作
bin/hadoop namenode -format
格式化namenode ,第一次啟動服務前執行的操作,以後不需要執行。
2 、然後啟動 hadoop :
sbin/start-all.sh
3 、使用 jps 命令檢視執行情況
#master 執行 jps 檢視執行情況
25928 SecondaryNameNode
25742 NameNode
26387 Jps
26078 ResourceManager
#slave 執行 jps 檢視執行情況
24002 NodeManager
23899 DataNode
24179 Jps
4 、命令檢視 Hadoop 叢集的狀態
透過簡單的jps 命令雖然可以檢視 HDFS 檔案管理系統、 MapReduce 服務是否啟動成功,但是無法檢視到 Hadoop 整個叢集的執行狀態。我們可以透過 hadoopdfsadmin-report 進行檢視。用該命令可以快速定位出哪些節點掛掉了, HDFS 的容量以及使用了多少,以及每個節點的硬碟使用情況。
hadoop dfsadmin -report
輸出結果:
Configured Capacity: 50108030976 (46.67 GB)
Present Capacity: 41877471232 (39.00 GB)
DFS Remaining: 41877385216 (39.00 GB)
DFS Used: 86016 (84 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
……
5 、 hadoop 重啟
sbin/stop-all.sh
sbin/start-all.sh
錯誤
在搭建完成啟動的時候,發生過兩個錯誤:
1 、 xxx:Error:JAVA_HOMEisnotsetandcouldnotbefound
這個錯誤意思沒有找到jdk 的環境變數,需要在 hadoop-env.sh 配置。
vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
## 配置項
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
2 、 Theauthenticityofhost ‘ 0.0.0.0(0.0.0.0) ’ can ’ tbeestablished.
解決方案關閉SELINUX
— 關閉 SELINUX
# vim /etc/selinux/config
— 註釋掉
#SELINUX=enforcing
#SELINUXTYPE=targeted
— 新增
SELINUX=disabled
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2727470/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師大資料培訓分享:Hadoop叢集同步程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享Hadoop入門進階程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享Hadoop的shuffle過程程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享Hadoop怎樣處理資料?程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享MapReduce理解程式設計師大資料
- 好程式設計師大資料培訓分享Hadoop技術優缺點程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享HDFS讀流程程式設計師大資料
- 好程式設計師大資料培訓分享spark之Scala程式設計師大資料Spark
- 好程式設計師大資料培訓分享大資料還學嗎?程式設計師大資料
- 好程式設計師大資料培訓分享大資料的應用程式設計師大資料
- 好程式設計師大資料培訓分享mysql資料型別程式設計師大資料MySql資料型別
- 好程式設計師大資料培訓分享大資料面試寶典一程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典二程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典三程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典四程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典六程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料的影響一程式設計師大資料
- 好程式設計師大資料培訓分享之hive常用內部函式程式設計師大資料Hive函式
- 好程式設計師大資料培訓分享Hadoop入門學習線路圖程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享常見的Hadoop和Spark專案程式設計師大資料HadoopSpark
- 好程式設計師大資料培訓分享大資料兩大核心技術程式設計師大資料
- 好程式設計師大資料培訓分享之《MySQL資料庫》常用函式整理程式設計師大資料MySql資料庫函式
- 好程式設計師大資料筆記之:Hadoop叢集搭建程式設計師大資料筆記Hadoop
- 好程式設計師大資料培訓分享大資料就業方向有哪些?程式設計師大資料就業
- 好程式設計師大資料培訓之Hadoop常見問題程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享之hive常見自定義函式程式設計師大資料Hive函式
- 好程式設計師大資料培訓分享Spark技術總結程式設計師大資料Spark
- 好程式設計師大資料培訓分享MySQL8.0新特性程式設計師大資料MySql
- 好程式設計師雲端計算培訓分享伺服器叢集cluster講解程式設計師伺服器
- 好程式設計師大資料培訓簡述Hadoop常見問題程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享之Ambari和ClouderaManager對比程式設計師大資料Cloud
- 好程式設計師大資料培訓分享之hive儲存過程程式設計師大資料Hive儲存過程
- 好程式設計師大資料培訓分享HBase Filter過濾器概述程式設計師大資料Filter過濾器
- 好程式設計師大資料培訓分享如何區分Hive與HBase程式設計師大資料Hive
- 好程式設計師大資料培訓分享Spark需要什麼基礎?程式設計師大資料Spark
- 好程式設計師大資料培訓分享之MySQL資料庫SQL簡介程式設計師大資料MySql資料庫
- 好程式設計師大資料學習路線分享彈性分散式資料集RDD程式設計師大資料分散式
- 好程式設計師分享乾貨 彈性分散式資料集RDD程式設計師分散式