电竞比分网-中国电竞赛事及体育赛事平台

分享

CentOS 6.5上搭建Hadoop環(huán)境詳解

 mypkm 2016-08-24
本文詳細(xì)記錄在開(kāi)發(fā)服務(wù)器CentOS 6.5上搭建Hadoop的詳細(xì)過(guò)程。
ssh連接免密碼配置
由于配置過(guò)程中需要頻繁的進(jìn)行ssh連接到開(kāi)發(fā)服務(wù)器執(zhí)行命令以及通過(guò)scp命令向服務(wù)器拷貝文件等依賴ssh連接的操作。所以,配置本地環(huán)境跟服務(wù)器之間的ssh免密碼連接可以有效的提升工作效率。
由于我本機(jī)已經(jīng)生成過(guò)公鑰,所以我只需將已有的公鑰拷貝到服務(wù)器即可。推薦使用ssh-copy-id命令,簡(jiǎn)單又不會(huì)出錯(cuò)。手動(dòng)copy 再append的公鑰文件尾,容易因?yàn)椴僮鲉?wèn)題,造成無(wú)法正確識(shí)別公鑰。
注:如果你沒(méi)有生成過(guò)公鑰,可通過(guò)ssh-keygen命令生成公鑰。走默認(rèn)配置即可。
在我的mac上,居然還沒(méi)有安裝ssh-copy-id命令。通過(guò)brew 命令安裝即可。
brew install ssh-copy-id
然后copy公鑰到指定主機(jī)
ssh-copy-id root@172.20.2.14
其中, root@172.20.2.14改為你需要訪問(wèn)的服務(wù)器的 用戶名@IP。根據(jù)提示輸入一次密碼。成功后,所有基于ssh的命令你只需要通過(guò)用戶名@IP 即可直接訪問(wèn)服務(wù)器。
新用戶、用戶組創(chuàng)建
為了更好的權(quán)限控制,養(yǎng)成良好的Linux使用習(xí)慣,我們首先創(chuàng)建一個(gè)管理和使用hadoop集群的用戶(組)dps-hadoop。這也是hadoop集群管理所需要的環(huán)境配置。
groupadd dps-hadoop
useradd -d /home/dps-hadoop -g dps-hadoop dps-hadoop
考慮到難免需要使用sudo提權(quán)的情況,給該用戶配置到sudo名單下, 修改/etc/sudoers文件。
vim /etc/sudoers
新增一行記錄:
dps-hadoop ALL=(ALL) ALL

此后,我們均使用dps-hadoop用戶進(jìn)行操作。
配置本地DNS服務(wù)器
之前我介紹了如何用Docker搭建本地的DNS服務(wù)器,這里終于派上用處。如果你沒(méi)有本地DNS服務(wù)器,那么你修改/etc/hosts文件也可以。 對(duì)于CentOS,臨時(shí)生效的配置文件在
/etc/resolv.conf
你可以看到該文件開(kāi)頭提示你,該文件是自動(dòng)生成的。重啟網(wǎng)絡(luò)服務(wù)會(huì)覆蓋,永久配置修改
/etc/sysconfig/network-scripts/ifcfg-eth0
修改其中的
DNS1=172.20.2.24
其中ifcfg-eth0,改為你自己的網(wǎng)卡名即可。
安裝JDK
Hadoop是Java開(kāi)發(fā)的,自然需要依賴jre運(yùn)行。我采用了比較本的方法,現(xiàn)在Oracle官網(wǎng)下載jdk-8u77到本地,再通過(guò)scp命令拷貝到服務(wù)器的方式。進(jìn)入jdk所在文件夾執(zhí)行
scp jdk-8u77-linux-x64.rpm dps-hadoop@172.20.2.14:~/download
其實(shí)通過(guò)wget也可以下載,但是網(wǎng)上給出的命令
wget --no-cookie --no-check-certificate --header 'Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F' http://download.oracle.com/otn-pub/java/jdk/7u10-b18/jdk-7u10-linux-i586.rpm
我試了多次均未成功。我自己有個(gè)笨方法,就是先通過(guò)瀏覽器獲取下載獲取到真正的下載地址
然后再通過(guò)wget下載:
wget http://download.oracle.com/otn-pub/java/jdk/8u77-b03/jdk-8u77-linux-x64.rpm?AuthParam=1460511903_6b2f8345927b3fc4f961fbcaba6a01b3
下載后,你可能需要進(jìn)行一次重命名,將多余的?AuthParam后綴去掉。
mv jdk-8u77-linux-x64.rpm?AuthParam=1460511903_6b2f8345927b3fc4f961fbcaba6a01b3 jdk-8u77-linux-x64.rpm
最后,安裝jdk
rpm -i jdk-8u77-linux-x64.rpm
配置JAVA_HOME
修改dps-hadoop用戶自己的環(huán)境變量配置文件。
vim ~/.bashrc
注意:網(wǎng)上提到了配置環(huán)境變量的方式有很多,粗暴的就是直接配置在/etc/environment或/etc/profile等全局配置文件中,對(duì)所有用戶生效。不推薦這種做法。對(duì)于用戶級(jí)的變量也有兩個(gè)~/.bash_profile和~/.bashrc,區(qū)別請(qǐng)自行研究。如果你想通過(guò)執(zhí)行start-dfs.sh等腳本,遠(yuǎn)程起停hadoop集群,那么請(qǐng)配置在~/.bashrc中,否則hadoop會(huì)找不到你配置的環(huán)境變量。
例如:Error: JAVA_HOME is not set and could not be found.
添加
export JAVA_HOME='/usr/java/jdk1.8.0_77'
不建議配置到/etc/environment 下,因?yàn)闀?huì)對(duì)所有用戶生效。
安裝Hadoop 2.6.4
根據(jù)官網(wǎng)介紹,Hadoop項(xiàng)目實(shí)際包含以下模塊:
Hadoop Common: The common utilities that support the other Hadoop modules.
Hadoop Distributed File System (HDFS?): A distributed file system that provides high-throughput access to application data.
Hadoop YARN: A framework for job scheduling and cluster resource management.
Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
首先,直接通過(guò)wget,從鏡像站下載。
wget http://mirrors./apache/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz
解壓到用戶目錄
tar -xvzf hadoop-2.6.4.tar.gz -C ~/
配置HADOOP_HOME,同樣修改~/.bashrc文件。增加
export HADOOP_HOME='/home/dps-hadoop/hadoop-2.6.4'
在其他節(jié)點(diǎn)重復(fù)上述所有配置操作。
添加用戶
配置dps-hadoop用戶,從master到各slave節(jié)點(diǎn)間的ssh免密碼訪問(wèn)。
修改DNS服務(wù)器地址
安裝JDK
下載解壓Hadoop
配置Hadoop環(huán)境變量
配置集群
從模塊角度理解,配置hadoop集群應(yīng)包括HDFS、YARN和MapReduce這三部分配置。
HDFS配置
不考慮調(diào)優(yōu),僅從功能可運(yùn)行上來(lái)理解,HDFS配置需要分別配置namenode、datanode的ip和端口號(hào)。數(shù)據(jù)備份份數(shù)。數(shù)據(jù)存放地址。因此配置如下:
namenode
core-site.xml
<configuration>
   <property>
           <name>hadoop.tmp.dir</name>
           <value>/home/dps-hadoop/tmpdata</value>
    </property>
    <property>
          <name>fs.default.name</name>
             <value>hdfs://master:54000/</value>
   </property></configuration>
hdfs-site.xml
<configuration>
   
   <property>
           <name>dfs.namenode.name.dir</name>
           <value>/home/dps-hadoop//namedata</value>
    </property>
   <property>
           <name>dfs.replication</name>
           <value>2</value>
    </property></configuration>
Datanode
core-site.xml
<configuration>
       <property>
               <name>hadoop.tmp.dir</name>
               <value>/home/dps-hadoop/tmpdata</value>
        </property>
        <property>
          <name>fs.default.name</name>
             <value>hdfs://master:54000/</value>
   </property></configuration>
hdfs-site.xml
<configuration>
   
   <property>
           <name>dfs.datanode.data.dir</name>
           <value>/home/dps-hadoop/datadir</value>
    </property></configuration>
這里只有core-site.xml里的hadoop.tmp.dir的配置是我們之前沒(méi)有提到的。該配置是修改臨時(shí)文件的存儲(chǔ)路徑,避免因?yàn)橄到y(tǒng)重啟造成的臨時(shí)文件的丟失,從而導(dǎo)致集群不可能用的情況出現(xiàn)。
2016-04-28注:
<property>
          <name>fs.default.name</name>
          <value>hdfs://master:54000/</value>
   </property>
該配置必須配置在core-site.xml配置文件中,之前的配置是錯(cuò)誤的。否則,各個(gè)hdfs節(jié)點(diǎn)不在一個(gè)集群中。
啟動(dòng)HDFS集群
跟使用硬盤(pán)一樣,HDFS使用前也需要格式化
bin/hdfs namenode -format
然后啟動(dòng)
sbin/start-dfs.sh
通過(guò)控制臺(tái),可查看HDFS集群狀態(tài)
http://172.20.2.14:50070/
一個(gè)插曲
啟動(dòng)時(shí)候發(fā)現(xiàn)一個(gè)WARN日志。
16/04/19 13:59:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
無(wú)法加載本地庫(kù)。從stackoverflow上答案來(lái)看,主要有三種可能。
沒(méi)有指定java.library.path環(huán)境變量。
本地庫(kù)跟系統(tǒng)不兼容。(64位系統(tǒng),提供的是32位的本地庫(kù))
GLIBC版本不兼容
通過(guò)file命令查看
file lib/native/*

已經(jīng)是64位的本地庫(kù)。
修改log4j.properties 打開(kāi)本地加載的debug級(jí)別
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=DEBUG
再次啟動(dòng)發(fā)現(xiàn)問(wèn)題
16/04/19 14:27:00 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: /home/dps-hadoop/hadoop-2.6.4/lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14’ not found (required by /home/dps-hadoop/hadoop-2.6.4/lib/native/libhadoop.so.1.0.0)
通過(guò)
ldd --version
發(fā)現(xiàn)我本地環(huán)境的版本是2.12的。這個(gè)不升級(jí)系統(tǒng)版本很難解決。把log 改成ERROR,暫時(shí)眼不見(jiàn)心不煩吧。
YARN配置
在YARN里,主節(jié)點(diǎn)稱為ResourceManager,從節(jié)點(diǎn)稱為NodeManager。 根據(jù)理解,需要告知NodeManager, ResouceManager的通信地址。 對(duì)于ResourceManager來(lái)說(shuō),所以的從節(jié)點(diǎn)已經(jīng)配置在slaves中了。因此,配置如下:
NodeManager
yarn-site.xml
<configuration>
   <property>
           <name>yarn.resourcemanager.hostname</name>
           <value>master</value>
       </property></configuration>
啟動(dòng)yarn,主節(jié)點(diǎn)執(zhí)行
.sbin/start-yarn.sh
MapReduce JobHistoryServer
對(duì)于MapReduce,默認(rèn)無(wú)需特殊配置。Hadoop提供了一個(gè)管理任務(wù)執(zhí)行歷史的服務(wù)JobHistoryServer。按需啟動(dòng)即可。
mr-jobhistory-daemon.sh stop historyserver
至此,一個(gè)基本的Hadoop集群已經(jīng)啟動(dòng)完成。
集群管理環(huán)境 WebUI地址
Hadoop默認(rèn)提供了查看集群狀態(tài)的Web服務(wù),在主節(jié)點(diǎn)上啟動(dòng)。默認(rèn)端口如下。
HDFS集群管理,默認(rèn)端口50070。 http://master:50070/
ResourceManager管理,默認(rèn)端口8088 http://master:8088/
JobHistory 默認(rèn)端口19888 http://master:19888

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多