俗話說(shuō)得好,萬(wàn)事開(kāi)頭難。在軟件開(kāi)發(fā)中,環(huán)境部署要算是第一門(mén)檻了。我最近折騰了一周時(shí)間把cdh5.0.2.tar.gz版本在MRv1模式下,成功集成了Kerberos安全認(rèn)證,并且是在全分布式模式下。經(jīng)過(guò)這次安裝過(guò)程,對(duì)hadoop的了解又深入了一層?,F(xiàn)在趁著自己剛搭建完環(huán)
俗話說(shuō)得好,萬(wàn)事開(kāi)頭難。在軟件開(kāi)發(fā)中,環(huán)境部署要算是第一門(mén)檻了。我最近折騰了一周時(shí)間把cdh5.0.2.tar.gz版本在MRv1模式下,成功集成了Kerberos安全認(rèn)證,并且是在全分布式模式下。經(jīng)過(guò)這次安裝過(guò)程,對(duì)hadoop的了解又深入了一層?,F(xiàn)在趁著自己剛搭建完環(huán)境,腦子還時(shí)不時(shí)的閃現(xiàn)遇到的錯(cuò)誤,把我的安裝過(guò)程記錄于此,一方面方便自己今后查閱,另一方面希望對(duì)今后遇到同樣問(wèn)題人有所啟發(fā)。
首先說(shuō)下為什么要用tarball安裝,cdh提供了一種manager方式進(jìn)行安裝,對(duì)Debian系列提供apt-get,對(duì)Redhat系列提供yum安裝,但是這些安裝方式把一些細(xì)節(jié)都替我們做了,如果我們今后希望遇到出現(xiàn)什么情況,不方便調(diào)試。另外,作為一個(gè)愛(ài)折騰的人,tar.gz也是我按照軟件的首選。
先說(shuō)下我的搭建環(huán)境,4臺(tái)Centos6.5服務(wù)器,一臺(tái)做master,運(yùn)行namenode、jobtracker;另外三臺(tái)運(yùn)行datanode、tasktracker。此外master機(jī)器上還運(yùn)行Kerberos服務(wù)器。JDK的版本是1.7.60。關(guān)于5.0.2版本的環(huán)境要求可以參考http://www.cloudera.com/content/support/en/downloads/cdh/cdh-5-0-2.html#SystemRequirements。
這篇文章主要是我在參照cloudera官網(wǎng)的教程時(shí)遇到的坑。大家可以先去看看這個(gè)教程,再來(lái)看我的文章。
cdh5.0.2這里不再使用hadoop用戶,取而代之的是mapred用戶與hdfs用戶,這里需要分別為它們生產(chǎn)ssh的公鑰與秘鑰,并且配置免密碼登錄(當(dāng)然你可以為其中一個(gè)生產(chǎn),然后直接copy過(guò)去)。
首先,Kerberos的原理、安裝什么大家自己去維基百科去查,具體命令像kinit、kadmin怎么用也是大家自己查,以后有時(shí)間我會(huì)單獨(dú)抽時(shí)間講講Kerberos。
大家現(xiàn)在可以按照這個(gè)文章來(lái)進(jìn)行操作:Kerberos deploy guide。
后面需要為集群中每個(gè)節(jié)點(diǎn)的mapred與hdfs用戶生成各自的principal與keytab,所以這里大家一定要熟悉kerberos的命令,把這些東西做成腳本,要不能煩死你。
首先在這里http://archive.cloudera.com/cdh5/cdh/5/下載5.0.2的hadoop的tar包hadoop-2.3.0-cdh5.0.2.tar.gz,除了這個(gè)外,為了集成Kerberos,還需要下載bigtop-jsvc-1.0.10-cdh5.0.2.tar.gz。
這里需要講一點(diǎn)是,5.0.2 tarball版本模式是YARN模式,我這里搭建的是MRv1(也就是普通的MapReduce)模式,所以需要對(duì)tar包解壓出的文件做一些修改。
把hadoop-2.3.0-cdh5.0.2.tar.gz解壓,假設(shè)你解壓到了/opt目錄下,把hadoop-2.3.0-cdh5.0.2直接重命名為hadoop(現(xiàn)在你的cdh根目錄是/opt/hadoop),下面進(jìn)行我們的修改工作:
把其中的mapreduce這個(gè)軟鏈接文件刪除,然后創(chuàng)建一個(gè)同名的軟鏈接指向mapreduce1
cd /opt/hadoop/share/hadoop/ rm mapreduce -rf ln -s mapreduce1 mapreduce
經(jīng)過(guò)上面這兩步后,就默認(rèn)啟用了MRv1模式了,大家可以先把不帶Kerberos安全認(rèn)證的全分布式搭建起來(lái),等到不帶Kerberos安全認(rèn)證的全分布式搭建起來(lái)后(可參考Hadoop全分布式搭建),再進(jìn)行下面的操作。
下面大家就可以按照官網(wǎng)的教程進(jìn)行操作,下面說(shuō)下我遇到的坑:
sbin/hadoop-daemon.sh start namenode sbin/hadoop-daemons.sh start datanode
這兩條命令都是用root用戶執(zhí)行。
在這過(guò)程中,如果遇到什么logs文件夾不能寫(xiě)入,將其權(quán)限改為777即可。
配置mapreduce接著參考官方的教程,下面繼續(xù)說(shuō)我遇到的坑:
banned.users=mapred,hdfs,bin
這里這樣配置后,后面運(yùn)行wordcount會(huì)報(bào)異常,這里可直接將其值配置為bin即可
chown root:mapred task-controller chmod 4754 task-controller
其解釋也在官網(wǎng)上有。
2014-07-15 18:15:25,722 ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because java.io.IOException: Secure IO is necessary to run a secure task tracker. at org.apache.hadoop.mapred.TaskTracker.checkSecurityRequirements(TaskTracker.java:943) at org.apache.hadoop.mapred.TaskTracker.initialize(TaskTracker.java:976) at org.apache.hadoop.mapred.TaskTracker.(TaskTracker.java:1780) at org.apache.hadoop.mapred.TaskTracker.main(TaskTracker.java:4124)
這個(gè)錯(cuò)誤是因?yàn)槿鄙賜ative包所致,這個(gè)包應(yīng)該是在/opt/hadoop/lib/native/,很遺憾,這些東西需要我們自己編譯,因?yàn)槊總€(gè)版本都不一樣,我把a(bǔ)pache hadoop的native直接copy過(guò)去也不行。這里我偷了個(gè)懶,直接從同事那里copy過(guò)來(lái)了。以后會(huì)說(shuō)說(shuō)如何從源碼編譯。下面說(shuō)說(shuō)如何編譯。
cdh的源碼都放在src文件夾下,安裝好maven后直接到這個(gè)文件夾下編譯就可以,我這里使用的是centos6.5編譯的,遇到的問(wèn)題主要有:
1. maven repository經(jīng)常連接不上,需要多次重復(fù)操作。以后最好做一個(gè)本地repo 2. centos上需要自己安裝一些依賴,否則回報(bào)各種錯(cuò)誤,可以用下面這條命令 yum install -y glibc-headers gcc-c++ zlib-devel openssl-devel 3. 一些test通過(guò)不了,需要跳過(guò),用下面這條命令進(jìn)行編譯 mvn package -Pdist,native -DskipTests
好了,如果在編譯過(guò)程中還是遇到什么依賴缺失,直接去google下就ok了。
export HADOOP_JOBTRACKER_USER=mapred export HADOOP_TASKTRACKER_USER=mapred
啟動(dòng)的命令是
sbin/hadoop-daemon.sh start jobtracker sbin/hadoop-daemons.sh start tasktracker
也有由root啟動(dòng)。
這次搭建過(guò)程前前后后用了一個(gè)星期,麻煩是一回事,各種權(quán)限問(wèn)題,最主要是還是我對(duì)hadoop的基本組成不夠了解,hadoop的各個(gè)部分都是分開(kāi)的,在share/hadoop目錄下的每個(gè)文件夾都對(duì)應(yīng)與一個(gè)功能,我一開(kāi)始就想著把他們都放一起,導(dǎo)致不同模塊的配置文件重復(fù)并產(chǎn)生沖突,最后導(dǎo)致進(jìn)程起不來(lái),今后還是要加強(qiáng)對(duì)基本概念的理解。其次是遇到錯(cuò)誤多看看日志文件,很多錯(cuò)誤能夠直接根據(jù)錯(cuò)誤信息就能夠改正。
還有需要吐槽的就是不能完全按部就班的照著教程來(lái)操作,應(yīng)該先看看像faq這些信息,做到有個(gè)整體上的把握,不至于拆了東墻補(bǔ)西墻,到最后也沒(méi)能完全解決問(wèn)題。
下面進(jìn)行HA的環(huán)境搭建,這次一定要提高效率了?。?!
俗話說(shuō)得好,萬(wàn)事開(kāi)頭難。在軟件開(kāi)發(fā)中,環(huán)境部署要算是第一門(mén)檻了。我最近折騰了一周時(shí)間把cdh5.0.2.tar.gz版本在MRv1模式下,成功集成了Kerberos安全認(rèn)證,并且是在全分布式模式下。經(jīng)過(guò)這次安裝過(guò)程,對(duì)hadoop的了解又深入了一層。現(xiàn)在趁著自己剛搭建完環(huán)境,腦子還時(shí)不時(shí)的閃現(xiàn)遇到的錯(cuò)誤,把我的安裝過(guò)程記錄于此,一方面方便自己今后查閱,另一方面希望對(duì)今后遇到同樣問(wèn)題人有所啟發(fā)。
原文地址:hadoop1.0 安全認(rèn)證(kerberos)安裝與總結(jié), 感謝原作者分享。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com