win7中的eclipse連接虛擬機中Linux(Ubuntu)的Hadoop (附上配置時遇到的錯誤和解決的方法)

參考文檔:

http://blog.csdn.net/hitwengqi/article/details/8008203

http://my.oschina.net/vigiles/blog/132289


Hadoop的運行模式共有三種:

1、單機模式(standalone

默認模式,安裝簡單,幾乎不用作任何配置,但是僅限於調試用途


2、僞分佈模式(Pseudo-DistributedMode

單節點上同時啓動nn、dn、jt、tt、sn等5個進程,模擬分佈式運行的各個節點


3、全分佈模式(FullyDistributed Mode

正常的Hadoop集羣,由多個各司其職的節點構成;一般我們要求至少要有三個節點,一個做Master,另外兩個做slave(datanode,tasktraker);另外,datanode最好要有兩個,如果只有一個datanode,那就沒有冗餘,這個根本就不叫集羣,沒有多大意思


版本:Ubuntu13.04  Hadoop_0.20.2

因爲一些原因,我就不專門新增加用戶用來測試hadoop了



一、安裝jdk

Linux下安裝JDK1.7


二、安裝Hadoop

點擊下載Hadoop_0.20.2


1.我的hadoop_0.20.2.tar.gz在"下載"裏,現在將它複製到安裝目錄 /usr/local/下;


cd 下載


sudo cp hadoop-0.20.2.tar.gz /usr/local/

2. 解壓hadoop-0.20.2.tar.gz;


cd /usr/local

sudo tar -zxf hadoop-0.20.2.tar.gz


3. 將解壓出的文件夾改名爲hadoop;


sudo mv hadoop-0.20.2 hadoop


4. (可選,如果之前建立了新的用戶和組,則需要輸入下面這條命令)將該hadoop文件夾的屬主用戶設爲hadoop:

sudochown-R hadoop:hadoop hadoop


進入Hadoop的解壓目錄,編輯conf/hadoop-env.sh文件(注意0.23版後配置文件的位置有所變化)



讓環境變量配置生效:source /usr/local/hadoop/conf/hadoop-env.sh



編輯conf目錄下core-site.xml、hdfs-site.xml和mapred-site.xml三個核心配置文件

core-site.xml: Hadoop Core的配置項,例如HDFSMapReduce常用的I/O設置等。
hdfs-site.xml: Hadoop
守護進程的配置項,包括namenode,輔助namenodedatanode等。
mapred-site.xml
MapReduce守護進程的配置項,包括jobtrackertasktracker


首先在Hadooph目錄下新建幾個文件夾

jimmy@jimmy:/usr/local/hadoop$ sudo mkdir tmp
jimmy@jimmy:/usr/local/hadoop$ sudo mkdir hdfs
jimmy@jimmy:/usr/local/hadoop$ sudo mkdir hdfs/name
jimmy@jimmy:/usr/local/hadoop$ sudo mkdir hdfs/data


接着編輯三個核心配置文件 *-site.xml

sudo gedit conf/core-site.xml
sudo gedit conf/hdfs-site.xml
sudo gedit conf/mapred-site.xml




注意:這裏設置了dfs.data.dir和dfs.name.dir兩個屬性,可能會出現兩個問題:


一、提示不能創建 %HADOOP_HOME%/hdfs/name/current和%HADOOP_HOME%/hdfs/data/current這兩個文件夾,自動手動創建即可!!


二、不能啓動datanode,查看%HADOOP_HOME%/logs/下面的datanode的日誌,發現提示“DataNode: java.io.IOException: Incompatible namespaceIDs in /dfs/dfs/data: namenode namespaceID = 69”;

原因是namenode 與datanode的namespaceIDs 不一致,刪除%HADOOP_HOME%/hdfs/name/current和%HADOOP_HOME%/hdfs/data/current目錄下的VERSION文件,問題就可以解決子!還有一種方法就是比較namespaceID的值,如果不一致,先修改namenode的值,再修改datanode的值,保持一致,然後重啓hadoop就ok了!




格式化HDFS(初次運行Hadoop時一定要有該操作)

source conf/hadoop-env.sh

bin/hadoop namenode -format

這裏大家可以把$HADOOP_HOME/bin加到PATH裏面去,這樣運行命令,就不需要打全路徑了!


創建文件夾


格式化:hadoop namenode -format

提示successfully formatted表示格式化成功



啓動Hadoop所有服務

用java的jps命令列出所有守護進程來驗證安裝是否成功,如果出現上圖黃色框內的5個進程,說明Hadoop僞分佈式模式已經配置好了!

摘自網絡:千萬要注意這裏,我使用這個命令只能看到jps自己的進程,糾結了很長時間,忽然發現得用sudojps果然能出現6個進程,坑爹啊,大家千萬要注意。


三、安裝ssh(安全外殼協議)

這裏的ssh並不是struts、s文件夾pring、hibernate;而是一種安全的通信協議,Hadoop便是基於這種協議進行通信的。

 安裝ssh:sudo apt-get install openssh-server

安裝期間需要回復‘y’以繼續運行:您希望繼續執行嗎?[Y/n]y


安裝完成後,我們啓動ssh服務:sudo /etc/init.d/ssh start

啓動後,通過命令查看是否已經正確啓動:ps -e | grep ssh

ok,啓動成功,接下來我們要配置免密碼登錄,要不然每次連接都需要輸入密碼,那還不累死人呀,不過免密碼登錄是存在安全隱患的,現在我們只是學習的目的,安全隱患並不是我們需要考慮的問題!!


以rsa算法生成公鑰和私鑰

注意:

1、首先用命令sudo -i,從$變成#;

$爲普通用戶的標識,#爲超級管理員用戶(root)的標識


2、命令“ssh-keygen -t rsa”中,“ssh-keygen”並沒有空格分隔的,之前見到網友寫成“ssh -keygen”,當然安裝失敗喇!


3、進入root後輸入ssh-keygen -t rsa命令回車後,系統會詢問存放的目錄,按缺省值即可(即直接按“Enter”)


4、如果是第一次操作,會提示輸入密碼(Enter passphrase),也是直接按Enter跳過即可; 如果已經生成過私鑰,則系統會提示是否覆蓋當前私鑰,直接覆蓋即可!


設置免密碼登錄:進入~/.ssh目錄下,將id_rsa.pub追加到authorized_keys授權文件中(一開始是沒有authorized_keys文件的)

# cd .ssh

# cat id_rsa.pub >> authorized_keys


登錄:ssh localhost


登出後再登錄:

這樣以後再登錄就不需要輸入密碼了!!


===== 虛擬機hadoop部分已經配置完成,接下來配置Ubuntu的網絡部分 ======


1、在終端輸入命令:“ifconfig”查看ip地址和子網掩碼等。


2、配置網卡參數到interfaces文件:

重啓網卡:

sudo /etc/init.d/networking restart


注:如果在重啓網卡後黑屏,強制重啓後發現上不了網,請留言;因爲我當時弄的時候,第一次重啓是成功的,當我第二次弄的時候,重啓網卡一直卡在黑屏處!!


重啓後再次輸入ifconfig查看網卡的配置是否已生效,一般來說已經設置好了!


3、配置Ubuntu的hosts文件:sudo gedit /etc/hosts


重啓Ubuntu


(注意:這裏我們虛擬機的網絡方式是:橋接)


==== Ubuntu網絡部分已經配置完畢,接下來配置物理機win7 ====


一、配置hosts文件


二、安裝unix仿真工具cygwin


三、在“服務”中啓動cygwin

四、打開 cygwin(生成密鑰對和解壓hadoop)



解壓hadoop,這裏就不貼出來了,請參照上面在Ubuntu解壓hadoop的操作!!


安裝hadoop的eclipse插件(實質上就是複製某個jar包到指定的位置就可),操作如下:

1、找到hadoop-eclipse插件jar包的位置

2、把jar包複製到eclipse安裝目錄下的plugins文件夾下面

重啓eclipse


======== 配置win7下的eclipse ======

一、設置eclipse的Perspective


這裏需要注意一下:在Package Explorer視圖下是不顯示“DFS Locations”的


二、調出MapRedue的視圖


在Project Explorer窗口發現有報錯,這個錯誤在之前就提及過的了:


解決這個問題,主要修改三處地方:

修改core-site.xml

修改mapred-site.xml

修改ubuntu的hosts文件


把這三處地方修改過後,win7下的eclipse應該可以連接到ubuntu下的hdfs了,連接成功可以在eclipse看到一目錄樹,如下:

這樣說明連接成功了!



但是還會有一個權限的問題,如圖所示:


org.apache.hadoop.security.AccessControlException: Permission denied: user=jimmy\jimmylincole, access=READ_EXECUTE


解決的方法是:
到服務器上修改hadoop的配置文件:conf/hdfs-site.xml, 找到 dfs.permissions 的配置項 , 將value值改爲 false

<property>
<name>dfs.permissions</name>
<value>false</value>
<description>
If "true", enable permission checking in HDFS.
If "false", permission checking is turned off,
but all other behavior is unchanged.
Switching from one parameter value to the other does not change the mode,
owner or group of files or directories.
</description>
</property>

 
修改完要重啓下hadoop的進程才能生效!!


另一種解決的方法,解釋了錯誤出現的原因,原文地址如下:

http://hi.baidu.com/hontlong/blog/item/9ba50ddbd1e16270d0164ec4.html


修改完成後,重新在eclipse連接,如果如下圖所示,那麼,恭喜您,前面的辛苦沒有白費,成功連接ubuntu的hdfs:



至此,所有工作已經完成了!

============ 快樂的分隔線 =============


ps:一路起來,不容易呀!能堅持下來,就是成功者;

上面所配置的ip地址和端口號,一定要參照按自己所配置的,不能照抄我的;還有一點需要說明的是,可能大夥在看這篇博客的時候,發現我的ip地址前後不一致,這是因爲我在搭建的時候,ubuntu設置成靜態的ip地址,突然上不了網,最後改了一下ip地址和設置了DNS才解決不能上網的問題!


附:解決Ubuntu設置靜態IP地址後重啓不能上網的問題


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章