因為電腦配備不夠好所以
改安裝偽分布模式
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