3月初寫過FreeBSD下安裝hadoop的文章,那會hadoop還沒有進入FreeBSD的ports,剛寫完沒多久,3月27日。FreeBSD的ports樹就引入了hadoop,安裝就太方便了。
怎麼更新ports樹就略過了,直接跳到安裝hadoop
#cd /usr/ports/devel/hadoop
#make install clean
等著完事就行了。都是編譯安裝,非常優化,而且自動解決依賴關係,諸如bash,openjdk一類的,目前的版本是hadoop-1.0.0。不過我還沒想明白將來hadoop ports更新的時候,ports是如何進行熱更新的。
不過還不夠全自動,少量的東西會需要手工配置一下。主要是帳號許可權問題。假設以單機版方式配置hadoop
以下內容用root許可權完成
echo “namenode_enable=YES” >> /etc/rc.conf
echo “datanode_enable=YES” >> /etc/rc.conf
echo “jobtracker_enable=YES” >> /etc/rc.conf
echo “tasktracker_enable=YES” >> /etc/rc.conf
echo “127.0.0.1 localhost.localdomain” >> /etc/hosts;
chsh hadoop
#安裝完成後,make會自動建立hadoop使用者和hadoop組,但在啟動hadoop過程中似乎有些問題,所以需要修改一下。修改紅字部分為以下內容
#Changing user information for hadoop.
Login: hadoop
Password: *
Uid [#]: 955
Gid [# or name]: 0
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /nonexistent
Shell: /usr/local/bin/bash
Full Name: hadoop user
Office Location:
Office Phone:
Home Phone:
Other information:

然後root部分的工作就完成了,下列工作請su到hadoop使用者下完成。
ports安裝和原始碼安裝自然是不太一樣,配置檔案放在了freebsd的標準配置檔案路徑下,也就是/usr/local/etc/hadoop。
日誌檔案則放在/var/log/hadoop下
/usr/local/etc/hadoop/core-site.xml:

<configuration>
         <property>
                 <name>fs.default.name</name>
                 <value>hdfs://localhost:9000</value>
         </property>
</configuration>

/usr/local/etc/hadoop/hdfs-site.xml:

<configuration>
         <property>
                 <name>dfs.replication</name>
                 <value>1</value>
         </property>
</configuration>

/usr/local/etc/hadoop/mapred-site.xml:

<configuration>
         <property>
                 <name>mapred.job.tracker</name>
                 <value>localhost:9001</value>
         </property>
</configuration>

然後還是用hadoop賬戶,執行如下
hadoop namenode -format
/usr/local/etc/rc.d/namenode start
/usr/local/etc/rc.d/datanode start
/usr/local/etc/rc.d/jobtracker start
/usr/local/etc/rc.d/tasktracker start

沒有然後了。