總網頁瀏覽量

2014年5月2日 星期五

安裝hadoop 單機模式(cdh4.3.0) 未完成

因為電腦配備不夠好所以
改安裝偽分布模式


1.首先安裝jdk 6
2.安裝ssh
3.下載hadoop-2.0.0 cdh4 cloudera


格式化hdfs時候
遇到unable to load native hadoop library for your platform問題
是因為lib/native沒有.so檔案
所以要自個重新編譯一次原始碼

之前我安裝hadoop1.1.2是因為官方已經有附上.so檔案了

前奏
step1:

$ sudo apt-get install g++ autoconf automake libtool make cmake zlib1g-dev pkg-config libssl-dev


安装protobuf过程
protoc --version查看protobuf版本是2.4.1版
所以sudo apt-get autoremove libprotoc7 卸載
接著wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz 


tar xvf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
依序執行命令安裝protoc
./configure  --prefix=/usr                 #因為ubuntu預設Lib會裝在/usr/local/lib之下  即使安裝完畢也無法使用protoc指令   所以必須加上 prefix=/usr
make
make check
make install
(如果出現permission denied ,那麼就sudo make install)
("cannot install ............. to a directory not ending in"那麼就打上make clean
重新編譯一次)

protoc--version
確認版本libprotoc 2.5.0


安裝maven
我安裝3.2.1版  下載
apache-maven-3.2.1.bin.tar.gz
解壓縮至/usr/local/apache-maven-3.2.1.bin

環境變數在自己帳號家目錄之下以及root帳號家目錄之下的.bashrc設定
export M2_HOME=/usr/local/apache-maven-3.2.1.bin
export PATH=${M2_HOME}/bin

查看maven版本
mvn -version
編譯遇上問題  protobuf出現錯誤
解決方法如下
https://issues.apache.org/jira/browse/HADOOP-9346
 <dependency>
         <groupId>com.google.protobuf</groupId>
         <artifactId>protobuf-java</artifactId>
拿掉      <version>2.4.0a</version>
加上       <version>2.5.0</version>
       </dependency>
       <dependency>
         <groupId>commons-daemon</groupId>

之後可以編譯了
去hadoop的src目錄之下
編譯指令是mvn compile -Pnative
但過程有出現exception  應該是網路的問題
接著會進入很多個test run要等一陣子
可以休息一下 出去逛個街再回來



格式化過程出現:

[WARN]..........  should be specified as a URI in configuration files. Please update hdfs configuration.


主要是hdfs.site.xml的dfs.name.dir路徑表示方式已經跟舊版不一樣
解決辦法:
<property>

<name>dfs.name.dir</name>

<value> file:/home/useraccount/hadoopfolder/dfs/name</value>

<final>ture</final>

<description>The directories where the namenode stores its persistent matadata.</description>

</property>

啟動hadoop遇到

Class org.apache.hadoop.thriftfs.NamenodePlugin not found


主要是因為hdfs.site.xml我用了官方預設的設定
將namenode與datanode的plugin標籤註解就OK
(我拿etc/hadoop-mapreduce1-pseduo之下的配置檔案
直接套用  結果出現上面bug)


格式化後重啟hadoop遇到
java.io.IOException: Incompatible clusterIDs
然後datanode沒有起來
解法:格式化之前先將 dfs.data.dir的目錄之下所有檔案清空



secondarynamenode出現
“Inconsistent checkpoint fields”的Exception
是因為格式化之前沒有清掉hadoop.tmp.dir目錄下的資料
  此异常即是配置hadoop.tmp.dir参数引起的,在hdfs-site.xml中增加此参数,重新启动集群即可。


若遇到
 java.io.IOException: Failed on local exception: java.io.EOFException; Host Details : local host is: "*******"; destination host is: OOOOOO;
請檢查一下
/etc/hosts

我原本寫
127.0.0.1 localhost之後又寫127.0.0.1 machinename
將後面那個拿掉之後重新格式化、清空dfs.data.dir與hadoop.tmp.dir之嘔
重啟hadoop此exception隨風而逝

不過關閉hadoop仍會出現此exception