圖片來源:http://hadoop.apache.org/
今天共用了三台機器,終於真正架了一個 Hadoop Cluster ,在這之前都只是安裝在一台機器上:[Linux] 安裝單機版 Hadoop 0.20.1 Single-Node Cluster (Pseudo-Distributed) @ Ubuntu 9.04。由於想嘗試 HadoopDB
,因此在工作場所裡透過 VMWare Workstation 安裝 Hadoop 0.19.2 版,並且碰到一堆有的沒有的問題,連
Hadoop 的 wordcount 範例都跑不起來!盡管最後有設定成功,但太不熟了,回寢室後再試一次,順便替自己架設個人把玩的開發環境啦!
環境:Windows 7 x64 + VirtualBox
3.12 r56127 ,預計安裝 3 台機器的 Cluster 囉。原本打算使用 ubuntu-9.10-server-amd64.iso
,但 VirtualBox 啟動有些問題,因此改成 ubuntu-9.10-server-i386.iso ,並且在安裝過程中,給予 20
GB 硬碟空間,以及最後建立 hadoop 使用者,接下來的架設方式是設定好一台虛擬機器後,透過複製虛擬機器的方式來新增機器。
安裝好一台虛擬機器後,緊接著進行更新與軟體的安裝
- VirtualBox 環境設定
- 新增網卡
- 預設只有一張網卡,代號應該是 eth0 ,通常會用它來連外,常用的設置是 NAT 方式
- 建議再加一張網卡,用來讓自己的電腦(Host OS)能連進虛擬機器(Guest OS),詳情可參考這篇 讓本機可連虛擬機器,虛擬機器可連外 - VirtualBox 網路設定,雖然這並非需要,但有這個就可以透過 ssh client (Putty)連進去,而不需要透過 VirualBox 的介面。
- 接下來還需要建立一個固定的 IP ,而第二張 eth1 網卡採用 VirtualBox 之 「僅限主機」介面卡 (Host-Only)
即可,它提供 DHCP 服務,而 eth1 除了可以用來與自己的電腦溝通,還可以另外再對 eth1 多設定一個 Static IP 供
Cluster 內部溝通
- 在 Linux or Ubuntu 的機器上,若設定完網卡後,或是使用複製的虛擬機器時,透過 $ ifconfig 卻看不到網路卡,可以使用以下方式試試
- $ sudo rm /etc/udev/rules.d/70-persistent-net.rules
$ sudo reboot
- $ sudo rm /etc/udev/rules.d/70-persistent-net.rules
- 透過 $ ifconfig 可以看到 eth1 網卡後,接著使用 $ sudo dhclient eth1 更新來獲得一組 IP ,而 Host-Only 本來就有提供 DHCP 服務,此時主要用來測試網路的設定是否正常
- 如果都沒問題,那就可以設定讓它開機就自動弄好,並且將 eth1:0 設定成 Static IP
- $ sudo vim /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# Host-Only
auto eth1
iface eth1 inet dhcp
auto eth1:0
iface eth1:0 inet static
address 192.168.56.168
netmask 255.255.0.0- 之所以設定成 192.168.56.168 是因為預設的 Host-Only 是 192.168.56.x 網域的,用同網域的另一個好處是自己的電腦 (Host OS)可以用這個固定 IP 來連線,不需每次要用就得查詢一次,但實際使用上此 DHCP 都分配 192.168.56.101 之後的 IP ,因此也需要小心設定,以免衝 IP 囉。
- $ sudo vim /etc/network/interfaces
- 設定完後,除了可以透過 $ sudo reboot 啟用 IP ,也可以透過指令更新 $ sudo /etc/init.d/network restart
- 新增網卡
- 更新系統
- $ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get upgrade - 另外還有個東西叫做 aptitude 對我而言也挺新鮮的,詳情請逛逛 Aptitude - Ubuntu 正體中文 Wiki
- $ sudo aptitude safe-upgrade
$ sudo aptitude full-upgrade
$ sudo aptitude dist-upgrade
- $ sudo aptitude safe-upgrade
- $ sudo apt-get update
- 安裝軟體或相關準備
- 建立暫放軟體的地方 /home/tmp
- $ sudo mkdir /home/tmp ; sudo chown -R hadoop:hadoop /home/tmp ;
- $ sudo apt-get install ssh rsync
- 有些東西已有安裝,執行上道指令只試再次確認囉,像是 openssh-server 等。安裝完 openssh-server 後,建議可以透過 Putty 登入,接下來的操作會比較方便。
- 安裝 Java 環境
- 第一種方式:$ sudo apt-get install sun-java6-sdk
- 第二種方式:為了方便製作成 Portable 環境,採用類似 Tarball 的安裝方式,請至 Java SE Downloads - Sun Developer Network (SDN) 下載 Linux 的 SDK6 (Ex: jdk-6u17-linux-i586.bin),目前打算用 Java 1.6 的開發環境。如果使用 64-Bit 環境,下載時可以選擇 Linux x64 。
- 將下載得來的 jdk-6u17-linux-i586.bin 擺在 /home/tmp (可以用sftp傳進去)。
- 下載 Hadoop
- $ cd /home/tmp ;
$ wget http://ftp.mirror.tw/pub/apache/hadoop/core/hadoop-0.20.1/hadoop-0.20.1.tar.gz - 以下是我自己額外的使用
- $ wget http://ftp.mirror.tw/pub/apache/hadoop/core/hadoop-0.19.2/hadoop-0.19.2.tar.gz
- $ wget 'http://downloads.sourceforge.net/project/hadoopdb/hadoopdb/0.1.1/hadoopdb-all-0.1.1.0.tar.gz?use_mirror=nchc'
- $ wget http://jdbc.postgresql.org/download/postgresql-8.4-701.jdbc4.jar
- 好用的 screen
- $ vim ~/.screenrc
- caption always "%{bw}%M/%d %c %{wb} %-w%{c}%n %t%{w}%+w%{k} %=%{G}[%H] %l%"
- $ vim ~/.screenrc
- $ cd /home/tmp ;
- 建立暫放軟體的地方 /home/tmp
- 經過上述的軟體設定後,再接著做事之前,可以考慮先備份一下目前的虛擬環境,以方便往後取出備份
- "c:\Program Files\Sun\VirtualBox\VBoxManage.exe" clonevdi Cluster01.vdi Cluster_backup.vdi
- 由於 VirtualBox 的 *.vdi 有一些硬體資訊載裡頭(EX:UUID),所以無法像 VMWare 那樣可以選 I copy it 的選項來自動幫你處理,因此就需要透過上述的指令來複製虛擬機器。
- 設置統一的 Hadoop 環境
- 選擇你想要安裝的版本進行設定,此例以 hadoop 0.20.1
- $ cd /home/tmp ;
$ tar -xvf hadoop-0.20.1.tar.gz;
$ sh jdk-6u17-linux-i586.bin ; - 接著把 hadoop-0.20.1 和 jdk1.6.0_17 搬到家目錄吧!
- $ cp -r hadoop-0.20.1/* ~/
$ mv jdk1.6.0_17 ~/
- $ cp -r hadoop-0.20.1/* ~/
- 設定 Java 環境
- $ vim conf/hadoop-env.sh
- export JAVA_HOME=/home/hadoop/jdk1.6.0_17
- $ vim conf/hadoop-env.sh
- 設定停用 IPv6
- $ vim conf/hadoop-env.sh
- HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
- 可能是因為 Hadoop 對 IPv6 網路支援不穩,常常會莫名連不到其他機器,設定這個至少在此刻還滿重要的!
- $ vim conf/hadoop-env.sh
- 設定 /etc/hosts 與 /etc/hostname ,以三台電腦為例,目前這台當作 Cluster01 ,假設之後還會有 Cluster02 和 Cluster03 ( elalic 網友提醒!請勿使用底線"_"來描述電腦,有連不到機器的現象發生)
- $ sudo vim /etc/hostname
Cluster01 - $ sudo vim /etc/hosts
#127.0.1.1 Cluster01 (此行代表註解)
192.168.56.168 Cluster01
192.168.56.169 Cluster02
192.168.56.170 Cluster03
- $ sudo vim /etc/hostname
- 設定 conf/core-site.xml 、 conf/mapred-site.xml
- $ vim ~/conf/core-site.xml
- <property>
<name>fs.default.name</name>
<value>hdfs://Cluster01:9000</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri's scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri's authority is used to
determine the host, port, etc. for a filesystem.</description>
</property>
- <property>
- $ vim ~/conf/mapred-site.xml
- <property>
<name>mapred.job.tracker</name>
<value>Cluster01:9001</value>
<description>The host and port that the MapReduce job tracker runs
at. If "local", then jobs are run in-process as a single map
and reduce task.
</description>
</property>
- <property>
- $ vim ~/conf/core-site.xml
- 再啟動 Hadoop 前,將另外兩台電腦備妥,使用複製虛擬機器的方式新增,並且使用 VirtualBox 開啟它們,使得同一時間有三台虛擬機器
- "c:\Program Files\Sun\VirtualBox\VBoxManage.exe" clonevdi Cluster01.vdi Cluster02.vdi
"c:\Program Files\Sun\VirtualBox\VBoxManage.exe" clonevdi Cluster01.vdi Cluster03.vdi - 接著在 VirutalBox [檔案]->[虛擬媒體管理員]->[硬碟]->[加入] ,將上述
Cluster02.vdi 和 Cluster03.vdi 加入,接著回到 VirtualBox
主畫面點選[新增]機器,設定好你要的名稱(Ex: Cluster02 和 Cluster03)以及 Linux/Ubuntu
後,有個地方是要新增"虛擬硬碟",請選用"使用現有硬碟",依序分別挑選 Cluster02.vdi 和 Cluster03.vdi
以開啟兩台虛擬機器。 - 請幫它們加上二張網路卡 - 選擇 「僅限主機」介面卡 (VirtualBox Host-Only)
- 開機後請先更新 /etc/hostname 及 /etc/network/interfaces
- $ sudo vim /etc/hostname
- 修改成 Cluster02 或 Cluster03
- $ sudo vim /etc/network/interfaces
- auto eth1:0
iface eth1:0 inet static
address 192.168.56.169 # or address 192.168.56.170
netmask 255.255.0.0
- auto eth1:0
- $ sudo vim /etc/hostname
- 機器啟動後,會發現無法連線以及看不到網路卡 ( $ ifconfig ) ,請執行以下動作即可解決
- $ sudo rm /etc/udev/rules.d/70-persistent-net.rules
$ sudo reboot
- $ sudo rm /etc/udev/rules.d/70-persistent-net.rules
- "c:\Program Files\Sun\VirtualBox\VBoxManage.exe" clonevdi Cluster01.vdi Cluster02.vdi
- 以下在 Cluster01 操作
- 設定 SSH 登入免密碼
- $ ssh-keygen -t rsa -P ''
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys- 可以用 ssh localhost 測試是否成功,若能不輸入密碼登入則代表成功
- 可以用 ssh localhost 測試是否成功,若能不輸入密碼登入則代表成功
- 將 Cluster 01 上的 authorized_keys 複製給 Cluster02 和 Cluster03
- $ scp ~/.ssh/authorized_keys hadoop@Cluster02:~/.ssh/authorized_keys
$ scp ~/.ssh/authorized_keys hadoop@Cluster03:~/.ssh/- 若出現 scp: /home/hadoop/.ssh/: Is a directory 這類訊息,則先去該台機器使用 ssh 囉,例如連去其他台機器等
- 分別執行 $ ssh Cluster01 、 $ ssh Cluster02 和 $ssh Cluster03 試試,若可以免密碼登入即沒問題
- $ scp ~/.ssh/authorized_keys hadoop@Cluster02:~/.ssh/authorized_keys
- $ ssh-keygen -t rsa -P ''
- 設定 conf/masters 和 conf/slaves
- $ vim conf/masters
- Cluster01
- $ vim conf/slaves
- Cluster02
Cluster03
- Cluster02
- $ vim conf/masters
- 初始化 NameNode
- $ ~/bin/hadoop namenode -format
- 啟動 Hadoop
- $ ~/bin/start-all.sh
- 應該會看到類似的訊息:
hadoop@Cluster01:~$ ~/bin/start-all.sh
starting namenode, logging to /home/hadoop/bin/../logs/hadoop-hadoop-namenode-Cluster01.out
Cluster02: starting datanode, logging to /home/hadoop/bin/../logs/hadoop-hadoop-datanode-Cluster02.out
Cluster03: starting datanode, logging to /home/hadoop/bin/../logs/hadoop-hadoop-datanode-Cluster03.out
Cluster01: starting secondarynamenode, logging to /home/hadoop/bin/../logs/hadoop-hadoop-secondarynamenode-Cluster01.out
starting jobtracker, logging to /home/hadoop/bin/../logs/hadoop-hadoop-jobtracker-Cluster01.out
Cluster02: starting tasktracker, logging to /home/hadoop/bin/../logs/hadoop-hadoop-tasktracker-Cluster02.out
Cluster03: starting tasktracker, logging to /home/hadoop/bin/../logs/hadoop-hadoop-tasktracker-Cluster03.out
- 應該會看到類似的訊息:
- $ ~/jdk1.6.0_17/bin/jps
- 應該會看到類似的訊息:
hadoop@Cluster01:~$ jdk1.6.0_17/bin/jps
1783 Jps
1631 SecondaryNameNode
1693 JobTracker
1470 NameNode
- 應該會看到類似的訊息:
- $ ~/bin/hadoop dfsadmin -report
- 應該會看到類似的訊息:
hadoop@Cluster01:~$ ~/bin/hadoop dfsadmin -report
Configured Capacity: 39905583104 (37.16 GB)
Present Capacity: 34398027776 (32.04 GB)
DFS Remaining: 34397978624 (32.04 GB)
DFS Used: 49152 (48 KB)
DFS Used%: 0%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
-------------------------------------------------
Datanodes available: 2 (2 total, 0 dead)
Name: 192.168.56.103:50010
Decommission Status : Normal
Configured Capacity: 19952791552 (18.58 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 2753777664 (2.56 GB)
DFS Remaining: 17198989312(16.02 GB)
DFS Used%: 0%
DFS Remaining%: 86.2%
Last contact: Mon Jan 04 22:59:29 CST 2010
Name: 192.168.56.102:50010
Decommission Status : Normal
Configured Capacity: 19952791552 (18.58 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 2753777664 (2.56 GB)
DFS Remaining: 17198989312(16.02 GB)
DFS Used%: 0%
DFS Remaining%: 86.2%
Last contact: Mon Jan 04 22:59:28 CST 2010
- 應該會看到類似的訊息:
- 以 WordCount 測試 Hadoop 看看
- $ ~/bin/hadoop fs -mkdir input
- $ ~/bin/hadoop fs -put README.txt input/
- $ ~/bin/hadoop jar hadoop-0.20.1-examples.jar wordcount input output
10/01/04 23:01:44 INFO input.FileInputFormat: Total input paths to process : 1
10/01/04 23:01:44 INFO mapred.JobClient: Running job: job_201001042257_0001
10/01/04 23:01:45 INFO mapred.JobClient: map 0% reduce 0%
10/01/04 23:01:54 INFO mapred.JobClient: map 100% reduce 0%
10/01/04 23:02:06 INFO mapred.JobClient: map 100% reduce 100%
10/01/04 23:02:08 INFO mapred.JobClient: Job complete: job_201001042257_0001
10/01/04 23:02:08 INFO mapred.JobClient: Counters: 17
10/01/04 23:02:08 INFO mapred.JobClient: Job Counters
10/01/04 23:02:08 INFO mapred.JobClient: Launched reduce tasks=1
10/01/04 23:02:08 INFO mapred.JobClient: Launched map tasks=1
10/01/04 23:02:08 INFO mapred.JobClient: Data-local map tasks=1
10/01/04 23:02:08 INFO mapred.JobClient: FileSystemCounters
10/01/04 23:02:08 INFO mapred.JobClient: FILE_BYTES_READ=1836
10/01/04 23:02:08 INFO mapred.JobClient: HDFS_BYTES_READ=1366
10/01/04 23:02:08 INFO mapred.JobClient: FILE_BYTES_WRITTEN=3704
10/01/04 23:02:08 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=1306
10/01/04 23:02:08 INFO mapred.JobClient: Map-Reduce Framework
10/01/04 23:02:08 INFO mapred.JobClient: Reduce input groups=0
10/01/04 23:02:08 INFO mapred.JobClient: Combine output records=131
10/01/04 23:02:08 INFO mapred.JobClient: Map input records=31
10/01/04 23:02:08 INFO mapred.JobClient: Reduce shuffle bytes=1836
10/01/04 23:02:08 INFO mapred.JobClient: Reduce output records=0
10/01/04 23:02:08 INFO mapred.JobClient: Spilled Records=262
10/01/04 23:02:08 INFO mapred.JobClient: Map output bytes=2055
10/01/04 23:02:08 INFO mapred.JobClient: Combine input records=179
10/01/04 23:02:08 INFO mapred.JobClient: Map output records=179
10/01/04 23:02:08 INFO mapred.JobClient: Reduce input records=131 - $ ~/bin/hadoop dfs -cat output/p*
- 關掉 hadoop
- $ ./bin/stop-all.sh
stopping jobtracker
Cluster02: stopping tasktracker
Cluster03: stopping tasktracker
stopping namenode
Cluster02: stopping datanode
Cluster03: stopping datanode
Cluster01: stopping secondarynamenode
- $ ./bin/stop-all.sh
- $ ~/bin/start-all.sh
- 設定 SSH 登入免密碼
- 整體上就這樣,果然回家做一次就非常順,一次就成功啊!收工!
以下是一些參考資料
- 建構屬於自己的Cloud Computing - Hadoop
- Running Hadoop On Ubuntu Linux (Multi-Node Cluster)
- Hadoop - Clusters 安裝
除此之外,在公司安裝 Hadoop 0.19.2 時,碰到了以下問題
- Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.
- TaskTracker DiskChecker$DiskErrorException Could not find taskTracker
jobcache file.out in any of the configured local directories- Logs saying org.apache.hadoop.util.DiskChecker$DiskErrorException in TaskTracker are not relevant
- Re: Constantly getting DiskErrorExceptions - but logged as INFO
但真正發現,出問題的是因為 datanode 有一台的 /etc/hosts 設定有問題,修正後就沒問題啦。
其他在 hadoop 0.20.1 碰到的問題
- hdfs.DFSClient: DataStreamer Exception:
org.apache.hadoop.ipc.RemoteException: java.io.IOException: File
/path/file could only be replicated to 0 nodes, instead of 1- $ hadoop fs -mkdir in
$ hadoop fs -put README.txt in
10/01/19 08:35:13 WARN hdfs.DFSClient: DataStreamer Exception:
org.apache.hadoop.ipc.RemoteException: java.io.IOException: File
/user/hadoop/in/README.txt co
uld only be replicated to 0 nodes, instead of 1
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1267)
at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:422)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:508)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:953)
at org.apache.hadoop.ipc.Client.call(Client.java:739)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220)
at $Proxy0.addBlock(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)
at $Proxy0.addBlock(Unknown Source)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:2904)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:2786)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2076)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2262)
10/01/19 08:35:13 WARN hdfs.DFSClient: Error Recovery for block null bad datanode[0] nodes == null
10/01/19 08:35:13 WARN hdfs.DFSClient: Could not get block locations. Source file "/user/hadoop/in/README.txt" - Aborting...
put: java.io.IOException: File /user/hadoop/in/README.txt could only be replicated to 0 nodes, instead of 1 - 解法:請再三確認各台機器的 /etc/hosts 與 IP 狀況(ifconfig),如果都沒有問題,那等一陣子才試試,有時候環境剛初始化完會有這個現象,過一陣子之後就好了,另外可用 hadoop dfsadmin -report 來確認 datanode 是否正常跑起來,以及到各台機器用 jdk1.6.0_17/bin/jps 來查看 slaves ,正常要會有 TaskTracker 和 DataNode 。
- $ hadoop fs -mkdir in
你好. 我最近也再架設hadoop cluster
回覆刪除我在namenode 裡的 core-site.xml dfs.default.name 裏面, 只要打的是dns 別的datanode就會連不到(etc/hosts設定是ok的,ping 該dns 也完全沒問題)
打ip datanode就連的到 (dfsnodelist.jsp裡看的到datanode) 但只要跑job(word count 或 sort) 就會出現 IllegalArgumentException: Wrong FS
的錯誤 ,不知道您有沒有遇到這樣的問題呢 感謝
版主回覆:(02/27/2010 01:43:50 PM)
我使用上的確碰過很多奇怪的問題 XDD 但沒有碰過你說的問題, 關於你的部分, 我不確定真正的解法, 若只是網路連線部分, 建議試試停用 IPv6 的部分吧!因為我的網路連線有時也會怪怪的, 直到停用 IPv6 才穩定下來
在 conf/hadoop-env.sh 增加 HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
除此之外, 我暫時想不到其他解法, 有一陣子沒用 Hadoop 了 orz
你好
回覆刪除關於大大在設定ssh登入免密碼那部份,鍵入 ssh 127.0.0.1後,出現以下訊息:
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
請問是哪一步沒做到嗎?
以下是執行過程
user@Cluster01:~$ ssh-keygen -t rsa -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/id_rsa
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
1f:bc:88:f8:ff:e8:1d:38:cd:52:d9:8d:2e:28:fb:83 user@Cluster01
csce511@Cluster01:~$ ssh 127.0.0.1
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
RSA key fingerprint is a2:ae:cb:f7:13:38:8e:07:b0:13:b5:ae:6f:95:02:ff.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.
Linux Cluster01 2.6.31-20-generic-pae #57-Ubuntu SMP Mon Feb 8 10:23:59 UTC 2010 i686
To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
0 packages can be updated.
0 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
版主回覆:(03/02/2010 04:30:25 PM)
那句話只是第一次對某台機器建立 SSH 連線時, 才會蹦出來的訊息而已啦, 看訊息已經正常可以使用, 你可以再嘗試 $ ssh 127.0.0.1 , 之後應該就只會詢問 Password 而已 :>
上一個問題已經解決了,感謝大大!
回覆刪除那接下來複製authorized_keys的問題,我使用大大所教的那行指令
$ scp ~/.ssh/authorized_keys hadoop@Cluster02:~/.ssh/authorized_keys
複製於其他機器,但出現要我輸入密碼
但輸入該機器密碼都 failed, 那我可以直接在該機器上設定無SSH 密碼而不使用負制的方式登入嗎?
以下為執行過程
user@Cluster01:~$ scp ~/.ssh/authorized_keys Cluster02:~/.ssh/authorized_keys
user2@Cluster02's password:
Permission denied, please try again.
user2@Cluster02's password:
Permission denied, please try again.
user2@Cluster02's password:
Permission denied, please try again.
lost connection
再次麻煩大大了..感恩
版主回覆:(03/05/2010 03:37:50 PM)
看起來有點怪, 為什麼登入 Cluster02 時是用 user2 的帳號?! (user2@Cluster02's password:...)
另外可以改用附上完整的帳號方式
user@Cluster01:~$ scp ~/.ssh/authorized_keys user@Cluster02:~/.ssh/authorized_keys
其中問你的就是 user@Cluster02 這台機器上的密碼
這樣的架構是 Cluster01 跟 Cluster02 都有一個相同的帳號可以登入, 以我的例子是用 hadoop 這個帳號, 感覺你的例子是要用 "user" 這個帳號名稱嗎? 這樣是 Cluster02 上也有一個 user (名稱)帳號時, 透過上述指令設定後, 從 user@Cluster02 連去 user@Cluster01 時可以不用輸入密碼
最後, 補充一下, 我用的例子是 hadoop 帳號名稱, 並且在各台機器上 (Cluster01~03) 密碼都是一樣的, 做 scp 詢問密碼時, 若你機器上的密碼不一樣, 你需要留意一下囉, scp 只是用來做檔案複製, 把某個一台機器的檔案複製到另一台機器上
感謝版大! 因我機器不同,帳號密碼也都不同,因此而弄錯!
回覆刪除現在測試ok囉~ 非常謝謝大大精闢的教學及講解 :)
版主回覆:(03/06/2010 07:03:58 AM)
祝你一切順利啦 :D
板大不好意思我又來叨擾了~
回覆刪除我在裝好之後有個疑問~
看官方文件說是有誇平台的功能啦
若我一台機器為 windows 環境、 一台為Linux環境 那在連接上會有問題嗎?
版主回覆:(03/07/2010 03:53:57 AM)
我也沒試過啊, 大部分都嘛用 Linux 的環境 :D
板大您好
回覆刪除感謝上次的回應
我已經找到問題點
順便回再這裡 給大家參考XD
其實我的問題很單純 也很詭異
那就是 node的名字有底線!!!(ex: 我的master叫作:x_hdp_master)
就是那個底線.....改成dash之後(x-hdp-master) 就完全沒問題了~
大家也要注意喔 謝謝收看
版主回覆:(03/11/2010 11:10:58 AM)
關於你說的,也讓我突然想起來,我有同學也碰到耶!只是不是自己碰到的,印象就會很淺!我那同學也花了十多小時在這上面 orz 下次若有人還有一樣的問題,我會記住這個來提供對方資訊的!感謝你的分享 :D
大大你好
回覆刪除我是剛接觸的新手
我按照這邊文章作設定後來下jps都只有出現xxxxjps沒有出現其他的訊息
且下bin/hadoop dfsadmin -report
都會出現連接 127.0.0.1的訊息,連十次後就會自己abort
想請問是哪裡有問題,java環境要怎樣設定我適用jdk1.6.0_20
版主回覆:(03/15/2010 08:50:40 AM)
設定 Java 環境
* $ vim conf/hadoop-env.sh
o export JAVA_HOME=/home/hadoop/jdk1.6.0_17
至於沒有出現其他訊息, 這個沒環境很難 debug, 你得自行去找找資料囉 :>
你好 我在初始化namenode時 出現錯誤
回覆刪除/home/yabeorz/bin/hadoop: line 258: /home/hadoop/jdk1.6.0_21/bin/java: 沒有此一檔案或目錄
/home/yabeorz/bin/hadoop: line 289: /home/hadoop/jdk1.6.0_21/bin/java: 沒有此一檔案或目錄
/home/yabeorz/bin/hadoop: line 289: exec: /home/hadoop/jdk1.6.0_21/bin/java: cannot execute: 沒有此一檔案或目錄
請問是我沒設定到甚摩嗎?
謝謝
版主回覆:(04/18/2010 11:26:32 PM)
請確認你的系統有沒安裝 Java, 或是更新 conf/hadoop-env.sh 裡 JAVA_HOME 的位置
謝謝
回覆刪除已經可以完整跑完
請問可以再Cluster2 3上看到執行的樣子嗎?
謝謝
版主回覆:(08/05/2010 09:32:07 AM)
我看不太懂你的意思, 你可以在 Cluster2 或 Cluster3 去執行看看
謝謝分享 !
回覆刪除我沒有 3 台 PC , 所以在 一台 PC 上 用 VirtualBox 模擬 , 也 OK 了.
你好
回覆刪除我是用一台PC(WIN7)+virtualbox模擬3台PC是OK的
那現在我用實體電腦PA模擬一台虛擬機器VA
實體電腦PB模擬一台虛擬機器VB
那VA和VA要怎麼把它設成同個CLUSTER
抱歉 不是同個CLUSTER
回覆刪除是讓VA和VB能夠分別為cluster01和cluster02
謝謝
版主回覆:(08/10/2010 10:56:46 AM)
你的意思是說, 現在有兩台機器(PA和PB), 要如何連到對方嗎?
那你只要看他們各拿到哪個IP, 之後在設定一下 /etc/hosts 就行了, 但別忘了要確定 PA 跟 PB 能夠互連到
不是PA和PB互連
回覆刪除是VA和VB互連
要VA和VB變成cluster01和cluster02
謝謝
版主回覆:(09/01/2010 08:16:20 AM)
一樣的道理, 讓 VA 可以連線到 VB 囉(例如在 VA 用 ssh VB_IP 可以連進去 VB), 搞定這個在將 VA 和 VB 兩台機器的 /etc/hosts 更新好 IP 應該就行了
至於 VA 要怎樣連到 VB, 這部份你要自己去設定囉, 已不是架設 hadoop 的問題, 而是虛擬機器使用上的問題
謝謝你
回覆刪除再請問你一下
底層OS可以直接利用XenServer取代掉WIN7+VirtualBox嗎?
謝謝
版主回覆:(09/01/2010 08:23:02 AM)
我對 XenServer 不熟, 還沒使用過囉
印象中 Xen 也是用來管理虛擬機器用的, 但我不太記得 Xen 是一套底層的 OS ?! 印象中是建立在 Linux 作業系統上, 與 kernel 綁得更緊密的一套虛擬機器的管理系統(或許這樣也叫做OS吧XD)
以上印象可能有誤, 你在自己找點資料
請問啟動後,我用jps查,沒有看到datanode
回覆刪除這是正常的嗎?
版主回覆:(09/01/2010 08:45:07 AM)
你要查看執行 jps 的機器是不是做 datanode,若是的話才會顯示 datanode 囉,例如有的機器只做 namenode ,所以看不到 datanode,但也有人設定都有做namenode跟datanode囉,請自行留意。
找到問題了
回覆刪除不隻道為什麼重開VM conf/masters conf/slaves的設定跑掉
重作後,正常
之後,要測試
bin/hadoop dfs –mkdir input
bin/hadoop dfs –ls
bin/hadoop dfs –put /usr/local/hadoop/conf/core-site.xml input/
作到這裡,也是出現跟你一樣的IOException
等一下在下指令也是一樣
需要關機嗎?
版主回覆:(02/15/2011 02:20:42 PM)
ㄟ,很難看這樣就知道該怎樣解 XD 我有一陣子沒用了
你可能要確認 dfs 裡頭 input 目錄是否已存在,存在要記得先刪啊 bin/hadoop dfs -rmr input 等
不然還要確認 datanode 有沒有跑起來等等
要細細品味 XD
祝你好運
Hi Sir,
回覆刪除If I built a cluster by Hadoop,
can i run every application on it as a normal desktop machine?
版主回覆:(02/15/2011 02:36:02 PM)
Hi,
I think Hadoop is not designed for desktop usage.
The application should be re-designed in map-reduce structure.