2-hadoop基礎配置2
阿新 • • 發佈:2019-02-14
hadoop的
儲存:
hdfs
運算:
MapReduce: map(抽取, 對映)+reduce(化簡)
hadoop部署配置:
1.獨立模式
預設就是獨立模式
hadoop fs -ls / 列出的檔案和Linux本身的檔案一模一樣,檔案系統使用本地庫檔案,不是分散式檔案系統
2.偽分佈模式:模擬一個叢集
2.1 基礎配置
參考Hadoop.The.Definitive.Guide.3rd.Edition.pdf檔案中的配置例項,配置4個檔案
<?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- hdfs-site.xml -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- yarn-site.xml -->
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:8032</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
</configuration>
2.2 配置ssh無密碼登入
1)SSH無密碼原理
Master(NameNode | JobTracker)作為客戶端,要實現無密碼公鑰認證,連線到伺服器Salve(DataNode | Tasktracker)上時,
需要在Master上生成一個金鑰對,包括一個公鑰和一個私鑰,而後將公鑰複製到所有的Slave上。當Master通過SSH連線Salve時,
Salve就會生成一個隨機數並用Master的公鑰對隨機數進行加密,併發送給Master。Master收到加密數之後再用私鑰解密,
並將解密數回傳給Slave,Slave確認解密數無誤之後就允許Master進行連線了。這就是一個公鑰認證過程,其間不需要使用者手工輸入密碼。
重要過程是將客戶端Master複製到Slave上。
檢測是否安裝有ssh,service sshd status,redhat已安裝有ssh
2)生成公鑰私鑰
正確:ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
(錯誤:ssh-keygen -t rsa -P '' -f /home/wpy/hadoop/ssh/.ssh/id_rsa,生成祕鑰檔案不能隨意制定位置,
參考 http://blog.itpub.net/25851087/viewspace-1262468/ )
3)將公鑰追加到檔案
在/home/wpy/.ssh資料夾中執行 cat id_rsa.pub >> authorized_keys
4)測試ssh登入
第一次登入 ssh localhost,成功後.ssh資料夾下多一個檔案known_hosts
退出再次登入就不要輸入密碼了。
如果還需要輸入密碼,修改檔案許可權:
4.1 先刪除已經產生的兩個檔案,由於資料夾許可權設定不對,這兩個檔案生成的也不對,需要重新生成:
rm -f known_hosts
rm -f authorized_keys
4.2 然後重新執行 cat id_rsa.pub >> authorized_keys
4.3 最後再修改幾個資料夾許可權
chmod 644(g-w) authorized_keys
chmod 755 /home/wpy
chmod 755 /home/wpy/.ssh
再次登入就好了
Last login: Tue May 17 14:58:30 2016 from localhost
2.3 格式化hdfs檔案系統
hadoop namenode -format
2.4 啟動或停止守護程序
注意啟動順序,並且因為是用hadoop_mode2,所以還應該制定使用的配置檔案,啟動會較慢
啟動namenode:
start-dfs.sh --config $HADOOP_INSTALL/etc/hadoop_mode2
啟動yarn:
start-yarn.sh --config $HADOOP_INSTALL/etc/hadoop_mode2
還可以全部啟動:
start-all.sh --config $HADOOP_INSTALL/etc/hadoop_mode2
檢視是否成功:
可以jps/jps -l 檢視啟動的程序
還可以瀏覽器方式:
namenode; http://localhost:50070/
資源管理器: http://localhost:8088/
停止程序(注意順序):
stop-yarn.sh
stop-dfs.sh
// stop-all.sh
jps檢視程序全部停掉
2.5 配置自定義的hadoop配置檔案根目錄,這一步驟可以在前面制定啟動就不用加--config引數了
export HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop_mode2, 但是這隻對本次回話有效,重啟後無效
注意:如果要在/etc/environment中來配置的話,要這麼設定
HADOOP_CONF_DIR=/usr/wpysoft/hadoop-2.7.1/etc/hadoop_mode2
(不能寫成HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop_mode2,因為不識別$HADOOP_INSTALL)
2.6 檢視hadoop根目錄
hadoop fs -ls /
檢視當前使用者所在的使用者組:
id + wpy
2.7 常見問題處理
2.7.1 native 警告: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
一種情況是hadoop的版本和Linux版本不一致,一個32位,一個64位,按如下排除
hadoop 32/64位檢視:hadoop-2.7.1/lib/native目錄下, file libhadoop.so.1.0.0
linux 32/64位檢視:file /sbin/init
如果都是一樣的,那麼就是Hadoop自帶的native包過舊,需要更新而已,替換個即可,進入hadoop目錄的native目錄替換一下
方式一:用比較新的native-x64.rar替換hadoop中native下的內容,簡單容易
方式二(可能行):
http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 網站下載 hadoop-native-64-2.7.0.tar
tar -x hadoop-native-64-2.7.0.tar -C hadoop根目錄/lib/native/
都是替換native中內容
2.7.2 寫日誌異常導致的不能啟動
chown: changing ownership of `/usr/wpysoft/hadoop-2.7.1/logs': Operation not permitted
可能logs資料夾目錄是root使用者建立的,刪除logs即可
2.7.3 datanode未啟動
3.完全分散式模式
在多個主機上
修改hostname;vi /etc/sysconfig/network
更改 HOSTNAME=localhost.localdomain 即可
改後需要重啟
由於hadoop預設找的配置是hadoop目錄,新建立的完全分散式hadoop_mode3,如果要使用hadoop_mode3的配置,有兩種辦法
第一種:修改/etc/environment配置檔案,指向新目錄
第二種: 刪掉/etc/environment中HADOOP_CONF_DIR的配置,
建立一個符號連結(相當於快捷方式),
ln -s hadoop hadoop_mode3
準備工作:
修改redhat-2的hostname為s0,修改hadoop的配置HADOOP_CONF_DIR,指向hadoop_mode3
cp -r hadoop_mode2 hadoop_mode3
1.以redhat-2為模板,完全克隆3個備份機,分別為s1,s2,s3
這四個機器中,主從模式(即master/slaves):
一個作為名稱節點
一個作為名稱節點的副本
其他兩個作為資料節點
redhat-2: s0:192.168.198.130
redhat-21: s1:192.168.198.132
redhat-22: s2:192.168.198.133
redhat-23: s3:192.168.198.134
2.修改他們的hostname為s1,s2,s3
3.修改hosts檔案,先修改模板機hosts檔案/etc/hosts,增加配置
192.168.198.130 s0
192.168.198.132 s1
192.168.198.133 s2
192.168.198.134 s3
把上述配置同樣的方式增加到3個備份機中去,由於host檔案都一樣,可以遠端copy過去覆蓋掉原始檔
scp /etc/hosts [email protected]:/etc/
scp /etc/hosts [email protected]:/etc/
scp /etc/hosts [email protected]:/etc/
測試是否OK, ping s0,ping s1,ping s2,ping s3, cat /etc/hosts檔案看看是否更改成功
再測試遠端登入ssh s1,ssh s2,ssh s3看看能否遠端登入幾個備份機,不需要輸入密碼
4.修改hadoop配置檔案
先修改模板機的hadoop配置檔案
core-site.xml中修改localhost為s0
hdfs-site.xml中修改副本數為2
yarn-site.xml中修改localhost為s0
修改slaves檔案localhost為s1,s2,即以s1,s2作為備份機
s1
s2
不能寫成s1,s2
接下來把修改過的配置都覆蓋到其他機上去,可直接覆蓋hadoop_mode3整個目錄
scp -r hadoop_mode3 [email protected]:/usr/wpysoft/hadoop-2.7.1/etc
scp -r hadoop_mode3 [email protected]:/usr/wpysoft/hadoop-2.7.1/etc
scp -r hadoop_mode3 [email protected]:/usr/wpysoft/hadoop-2.7.1/etc
檢查是否修改成功,ssh s1,s2,s3/exit 遠端登入上去檢視檔案
可以直接檢視檔案 ssh s1 cat 檔案路徑檔案
5.格式化檔案系統(修改過配置檔案再格式化一次)
hadoop namenode -format
6.啟動叢集
在s0上start-all.sh
可以檢視jps, ssh s1 jps, ssh s2 jps ,ssh s3 jps
他們有的啟動名稱節點有的啟動資料節點
儲存:
hdfs
運算:
MapReduce: map(抽取, 對映)+reduce(化簡)
hadoop部署配置:
1.獨立模式
預設就是獨立模式
hadoop fs -ls / 列出的檔案和Linux本身的檔案一模一樣,檔案系統使用本地庫檔案,不是分散式檔案系統
2.偽分佈模式:模擬一個叢集
2.1 基礎配置
參考Hadoop.The.Definitive.Guide.3rd.Edition.pdf檔案中的配置例項,配置4個檔案
<?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- hdfs-site.xml -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- yarn-site.xml -->
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:8032</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
</configuration>
2.2 配置ssh無密碼登入
1)SSH無密碼原理
Master(NameNode | JobTracker)作為客戶端,要實現無密碼公鑰認證,連線到伺服器Salve(DataNode | Tasktracker)上時,
需要在Master上生成一個金鑰對,包括一個公鑰和一個私鑰,而後將公鑰複製到所有的Slave上。當Master通過SSH連線Salve時,
Salve就會生成一個隨機數並用Master的公鑰對隨機數進行加密,併發送給Master。Master收到加密數之後再用私鑰解密,
並將解密數回傳給Slave,Slave確認解密數無誤之後就允許Master進行連線了。這就是一個公鑰認證過程,其間不需要使用者手工輸入密碼。
重要過程是將客戶端Master複製到Slave上。
檢測是否安裝有ssh,service sshd status,redhat已安裝有ssh
2)生成公鑰私鑰
正確:ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
(錯誤:ssh-keygen -t rsa -P '' -f /home/wpy/hadoop/ssh/.ssh/id_rsa,生成祕鑰檔案不能隨意制定位置,
參考 http://blog.itpub.net/25851087/viewspace-1262468/ )
3)將公鑰追加到檔案
在/home/wpy/.ssh資料夾中執行 cat id_rsa.pub >> authorized_keys
4)測試ssh登入
第一次登入 ssh localhost,成功後.ssh資料夾下多一個檔案known_hosts
退出再次登入就不要輸入密碼了。
如果還需要輸入密碼,修改檔案許可權:
4.1 先刪除已經產生的兩個檔案,由於資料夾許可權設定不對,這兩個檔案生成的也不對,需要重新生成:
rm -f known_hosts
rm -f authorized_keys
4.2 然後重新執行 cat id_rsa.pub >> authorized_keys
4.3 最後再修改幾個資料夾許可權
chmod 644(g-w) authorized_keys
chmod 755 /home/wpy
chmod 755 /home/wpy/.ssh
再次登入就好了
Last login: Tue May 17 14:58:30 2016 from localhost
2.3 格式化hdfs檔案系統
hadoop namenode -format
2.4 啟動或停止守護程序
注意啟動順序,並且因為是用hadoop_mode2,所以還應該制定使用的配置檔案,啟動會較慢
啟動namenode:
start-dfs.sh --config $HADOOP_INSTALL/etc/hadoop_mode2
啟動yarn:
start-yarn.sh --config $HADOOP_INSTALL/etc/hadoop_mode2
還可以全部啟動:
start-all.sh --config $HADOOP_INSTALL/etc/hadoop_mode2
檢視是否成功:
可以jps/jps -l 檢視啟動的程序
還可以瀏覽器方式:
namenode; http://localhost:50070/
資源管理器: http://localhost:8088/
停止程序(注意順序):
stop-yarn.sh
stop-dfs.sh
// stop-all.sh
jps檢視程序全部停掉
2.5 配置自定義的hadoop配置檔案根目錄,這一步驟可以在前面制定啟動就不用加--config引數了
export HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop_mode2, 但是這隻對本次回話有效,重啟後無效
注意:如果要在/etc/environment中來配置的話,要這麼設定
HADOOP_CONF_DIR=/usr/wpysoft/hadoop-2.7.1/etc/hadoop_mode2
(不能寫成HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop_mode2,因為不識別$HADOOP_INSTALL)
2.6 檢視hadoop根目錄
hadoop fs -ls /
檢視當前使用者所在的使用者組:
id + wpy
2.7 常見問題處理
2.7.1 native 警告: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
一種情況是hadoop的版本和Linux版本不一致,一個32位,一個64位,按如下排除
hadoop 32/64位檢視:hadoop-2.7.1/lib/native目錄下, file libhadoop.so.1.0.0
linux 32/64位檢視:file /sbin/init
如果都是一樣的,那麼就是Hadoop自帶的native包過舊,需要更新而已,替換個即可,進入hadoop目錄的native目錄替換一下
方式一:用比較新的native-x64.rar替換hadoop中native下的內容,簡單容易
方式二(可能行):
http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 網站下載 hadoop-native-64-2.7.0.tar
tar -x hadoop-native-64-2.7.0.tar -C hadoop根目錄/lib/native/
都是替換native中內容
2.7.2 寫日誌異常導致的不能啟動
chown: changing ownership of `/usr/wpysoft/hadoop-2.7.1/logs': Operation not permitted
可能logs資料夾目錄是root使用者建立的,刪除logs即可
2.7.3 datanode未啟動
3.完全分散式模式
在多個主機上
修改hostname;vi /etc/sysconfig/network
更改 HOSTNAME=localhost.localdomain 即可
改後需要重啟
由於hadoop預設找的配置是hadoop目錄,新建立的完全分散式hadoop_mode3,如果要使用hadoop_mode3的配置,有兩種辦法
第一種:修改/etc/environment配置檔案,指向新目錄
第二種: 刪掉/etc/environment中HADOOP_CONF_DIR的配置,
建立一個符號連結(相當於快捷方式),
ln -s hadoop hadoop_mode3
準備工作:
修改redhat-2的hostname為s0,修改hadoop的配置HADOOP_CONF_DIR,指向hadoop_mode3
cp -r hadoop_mode2 hadoop_mode3
1.以redhat-2為模板,完全克隆3個備份機,分別為s1,s2,s3
這四個機器中,主從模式(即master/slaves):
一個作為名稱節點
一個作為名稱節點的副本
其他兩個作為資料節點
redhat-2: s0:192.168.198.130
redhat-21: s1:192.168.198.132
redhat-22: s2:192.168.198.133
redhat-23: s3:192.168.198.134
2.修改他們的hostname為s1,s2,s3
3.修改hosts檔案,先修改模板機hosts檔案/etc/hosts,增加配置
192.168.198.130 s0
192.168.198.132 s1
192.168.198.133 s2
192.168.198.134 s3
把上述配置同樣的方式增加到3個備份機中去,由於host檔案都一樣,可以遠端copy過去覆蓋掉原始檔
scp /etc/hosts
scp /etc/hosts [email protected]:/etc/
scp /etc/hosts [email protected]:/etc/
測試是否OK, ping s0,ping s1,ping s2,ping s3, cat /etc/hosts檔案看看是否更改成功
再測試遠端登入ssh s1,ssh s2,ssh s3看看能否遠端登入幾個備份機,不需要輸入密碼
4.修改hadoop配置檔案
先修改模板機的hadoop配置檔案
core-site.xml中修改localhost為s0
hdfs-site.xml中修改副本數為2
yarn-site.xml中修改localhost為s0
修改slaves檔案localhost為s1,s2,即以s1,s2作為備份機
s1
s2
不能寫成s1,s2
接下來把修改過的配置都覆蓋到其他機上去,可直接覆蓋hadoop_mode3整個目錄
scp -r hadoop_mode3
scp -r hadoop_mode3 [email protected]:/usr/wpysoft/hadoop-2.7.1/etc
scp -r hadoop_mode3 [email protected]:/usr/wpysoft/hadoop-2.7.1/etc
檢查是否修改成功,ssh s1,s2,s3/exit 遠端登入上去檢視檔案
可以直接檢視檔案 ssh s1 cat 檔案路徑檔案
5.格式化檔案系統(修改過配置檔案再格式化一次)
hadoop namenode -format
6.啟動叢集
在s0上start-all.sh
可以檢視jps, ssh s1 jps, ssh s2 jps ,ssh s3 jps
他們有的啟動名稱節點有的啟動資料節點