64位LINUX下hadoop2.2.0重新编译及安装步骤
yum -y install ?lzo-devel ?zlib-devel ?gcc autoconf automake libtool gcc-c++ openssl-devel ncurses-devel ? ?
ant maven protocolbuf ?findbugs ? cmake ? ?
1、Protobuf 編譯安裝 ?
tar -zxvf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0 ?
./configure --prefix=/usr/local/protobuf
make
make install ?
2、Ant 安裝 ?
tar -zxvf apache-ant-1.9.2-bin.tar.gz
mv apache-ant-1.9.2/ /usr/local/ant
3、編譯前的準備maven,官方下載地址
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.zip
maven 安裝 ?
tar -zxvf apache-maven-3.0.5-bin.tar.gz
mv apache-maven-3.0.5/ /usr/local/maven ?
4、findbugs 安裝 ?
tar -zxfv findbugs-2.0.2.tar.gz ?
mv findbugs-2.0.2/ /usr/local/findbugs ?
5、cmake 編譯安裝 ?
tar -zvxf cmake-2.8.6.tar.gz
cd cmake-2.8.6
./bootstrap
gmake
make
make install
6、下載對應的64位的JDK
#java 安裝 /usr/local/jdk1.7.0_45
7、配置環境 ?
vi /etc/profile ?
#java ?
export JAVA_HOME=/usr/local/jdk1.7.0_45
export JRE_HOME=/usr/local/jdk1.7.0_45/jre ?
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin ?
#maven ?
export MAVEN_HOME=/usr/local/maven
export MAVEN_OPTS="-Xms256m -Xmx512m"
export CLASSPATH=.:$CLASSPATH:$MAVEN_HOME/lib
export PATH=$PATH:$MAVEN_HOME/bin ? ?
#protobuf ?
export PROTOBUF_HOME=/usr/local/protobuf ?
export CLASSPATH=.:$CLASSPATH:$PROTOBUF_HOME/lib
export PATH=$PATH:$PROTOBUF_HOME/bin ?
#ant ?
export ANT_HOME=/usr/local/ant ?
export CLASSPATH=.:$CLASSPATH:$ANT_HOME/lib
export PATH=$PATH:$ANT_HOME/bin ? ?
#findbugs ?
export FINDBUGS_HOME=/usr/local/findbugs ?
export CLASSPATH=.:$CLASSPATH:$FINDBUGS_HOME/lib
export PATH=$PATH:$FINDBUGS_HOME/bin ? ?
source /etc/profile ?
8、如果是你32bit的機器,可以直接下載官方已經編譯好的包,64bit的機子跑編譯好的包跑不了。
由于maven國外服務器可能連不上,先給maven配置一下國內鏡像,在maven目錄下,conf/settings.xml,在<mirrors></mirros>里添加,原本的不要動
<mirror> ?
<id>nexus-osc</id> ?
<mirrorOf>*</mirrorOf> ?
<name>Nexusosc</name> ?
<url>http://maven.oschina.net/content/groups/public/</url> ?
</mirror> ?
同樣,在<profiles></profiles>內新添加
<profile> ?
<id>jdk-1.7</id> ?
<activation> ?
<jdk>1.7</jdk> ?
</activation> ?
<repositories> ?
<repository> ?
<id>nexus</id> ?
<name>local private nexus</name> ?
<url>http://maven.oschina.net/content/groups/public/</url> ?
<releases> ?
<enabled>true</enabled> ?
</releases> ?
<snapshots> ?
<enabled>false</enabled> ?
</snapshots> ?
</repository> ?
</repositories> ?
<pluginRepositories> ?
<pluginRepository> ?
<id>nexus</id> ?
<name>local private nexus</name> ?
<url>http://maven.oschina.net/content/groups/public/</url> ?
<releases> ?
<enabled>true</enabled> ?
</releases> ?
<snapshots> ?
<enabled>false</enabled> ?
</snapshots> ?
</pluginRepository> ?
</pluginRepositories> ?
</profile> ?
9、首先官方下載hadoop源碼
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0-src.tar.gz ?
編譯clean
cd hadoop2.2.0-src ?
mvn clean install –DskipTests ?
目前的2.2.0 的Source Code 壓縮包解壓出來的code有個bug 需要patch后才能編譯。否則編譯hadoop-auth 會提示錯誤:
vi /hadoop-2.2.0/hadoop-common-project/hadoop-auth/pom.xml ?
<dependency> ?
<groupid>org.mortbay.jetty</groupid>
<artifactid>jetty</artifactid>
<scope>test</scope>
</dependency> ?
在上面代碼后添加下面代碼
<dependency> ?
<groupid>org.mortbay.jetty</groupid>
<artifactid>jetty-util</artifactid>
<scope>test</scope>
</dependency> ?
注:不更改可能報下面錯位
[ERROR] ?Failed ?to ?execute ?goal ?org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (default-testCompile) on project hadoop-auth: Compilation failure: Compilation failure: ?---------------------------------------------------------------------------------------------- ?
ok,現在可以進行編譯了
mvn clean package -Pdist,native -DskipTests -Dtar ?
慢慢等吧!
[INFO] ------------------------------------------------------------ ?
[INFO] Total time: 11:53.144s ?
[INFO] Finished at: Fri Nov 22 16:58:32 CST 2013 ?
[INFO] Final Memory: 70M/239M ?
[INFO] ------------------------------------------------------------------------ ?
直到看到上面的內容那就說明編譯完成了。
編譯后的路徑在:hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0
[root@localhost bin]# ./hadoop version ?
Hadoop 2.2.0 ?
Subversion Unknown -r Unknown ?
Compiled by root on 2013-11-22T08:47Z ?
Compiled with protoc 2.5.0 ?
From source with checksum 79e53ce7994d1628b240f09af91e1af4 ?
This command was run using /data/hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar ?
可以看出hadoop的版本
[root@localhost hadoop-2.2.0]# file lib//native/* ?
lib//native/libhadoop.a: ? ? ? ?current ar archive ?
lib//native/libhadooppipes.a: ? current ar archive ?
lib//native/libhadoop.so: ? ? ? symbolic link to `libhadoop.so.1.0.0' ?
lib//native/libhadoop.so.1.0.0: <span style="color:#ff0000;">ELF 64-bit LSB shared object, x86-64, version 1</span> (SYSV), dynamically linked, not stripped ?
lib//native/libhadooputils.a: ? current ar archive ?
lib//native/libhdfs.a: ? ? ? ? ?current ar archive ?
lib//native/libhdfs.so: ? ? ? ? symbolic link to `libhdfs.so.0.0.0' ?
lib//native/libhdfs.so.0.0.0: ? <span style="color:#ff0000;">ELF 64-bit LSB shared object, x86-64, version 1</span> (SYSV), dynamically linked, not stripped ?
注意,如果下載官網的編譯好的包,這里顯示的是32-bit。
hadoop編譯成功,下面可以來部署集群。
10、部署集群準備
兩臺以上機器,修改hostname, ssh免登陸,關閉防火墻等
10.1、創建新用戶
useradd hadoop ?
su hadoop ?
注意以下操作有些需要root權限
10.2、修改主機名
vi /etc/sysconfig/network ?
hostname master ?
注銷一下系統,修改生效
10.3、修改hosts
vi /etc/hosts ?
新增你的主機IP和HOSTNAME ?
192.168.10.10 ?master ?
192.168.10.11 ?slave1 ?
10.4、ssh免登陸
修改/etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile ? ? ?.ssh/authorized_keys
然后service sshd restart ?
現在開始配置無密登錄
[hadoop@master ~]$ cd /home/hadoop/ ?
[hadoop@master ~]$ ssh-keygen -t rsa -P -f ~/.ssh/id_rsa
[hadoop@master ~]$ cd .ssh/ ?
[hadoop@master .ssh]$ cp id_rsa.pub authorized_keys ?
[hadoop@master .ssh]$ chmod 600 authorized_keys ?
[hadoop@master .ssh]$ scp authorized_keys root@192.168.10.11:/home/hadoop/.ssh/
[hadoop@master .ssh]$ ssh slave1
看到已經變成slave1了,說明成功
11、開始集群配置工作
配置之前在要目錄下創建三個目錄,用來放hadooop文件和日志數據
[hadoop@master ~]$mkdir -p dfs/name ?
[hadoop@master ~]$mkdir -p dfs/data ?
[hadoop@master ~]$mkdir -p temp ?
把之前編譯成功的版本移到hadoop目錄下,注意目錄權限問題
下面就開始配置文件
11.1、hadoop-env.sh
找到JAVA_HOME,把路徑改為實際地址
11.2、yarn-env.sh
同6.1
11.3、slave
配置所有slave節點
11.4、core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> ? //系統分布式URL ?
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/temp</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property> ?
<property> ?
<name>hadoop.proxyuser.hadoop.groups</name> ?
<value>*</value> ?
</property> ?
注意fs.defaultFS為2.2.0新的變量,代替舊的:fs.default.name
11.5、hdfs-site.xml
配置namenode、datanode的本地目錄信息
<property> ?
<name>dfs.namenode.secondary.http-address</name> ?
<value>master:9001</value> ?
</property> ?
<property> ?
<name>dfs.namenode.name.dir</name> ?
<value>/home/hadoop/dfs/name</value> ?
</property> ?
<property> ?
<name>dfs.datanode.data.dir</name> ?
<value>/home/hadoop/dfs/data,/mnt/d1,/mnt/d2,/mnt/d3</value>
</property> ?
<span style="white-space:pre"> ?
</span>
<property> ?
<name>dfs.replication</name> ?
<value>3</value> ?
</property> ?
<property> ?
<name>dfs.webhdfs.enabled</name>
<value>true</value> ?
</property>
新的:dfs.namenode.name.dir,舊:dfs.name.dir
新的:dfs.datanode.name.dir,舊:dfs.data.dir
dfs.replication確定 data block的副本數目,hadoop基于rackawareness(機架感知)默認復制3份分block,(同一個rack下兩個,另一個rack下一 份,按照最短距離確定具體所需block, 一般很少采用跨機架數據塊,除非某個機架down了)
11.6、mapred-site.xml
配置其使用 Yarn 框架執行 map-reduce 處理程序
這個地方需要把mapred-site.xml.template復制重新命名
<property> ?
<name>mapreduce.framework.name</name> ?
<value>yarn</value> ?
</property> ?
<property> ?
<name>mapreduce.jobhistory.address</name> ?
<value>master:10020</value> ?
</property> ?
<property> ?
<name>mapreduce.jobhistory.webapp.address</name> ?
<value>master:19888</value> ?
</property> ?
新的計算框架取消了實體上的jobtracker, 故不需要再指定mapreduce.jobtracker.addres,而是要指定一種框架,這里選擇yarn,hadoop2.2.還支持第三方的計算框架。
11.7、yarn-site.xml
配置ResourceManager,NodeManager的通信端口,WEB監控端口等
<property> ?
<name>yarn.nodemanager.aux-services</name> ?
<value>mapreduce_shuffle</value> ?
</property> ?
<property> ?
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> ?
<value>org.apache.hadoop.mapred.ShuffleHandler</value> ?
</property> ?
<property> ?
<name>yarn.resourcemanager.address</name> ?
<value>master:8032</value> ?
</property> ?
<property> ?
<name>yarn.resourcemanager.scheduler.address</name> ?
<value>master:8030</value> ?
</property> ?
<property> ?
<name>yarn.resourcemanager.resource-tracker.address</name> ?
<value>master:8031</value> ?
</property> ?
<property> ?
<name>yarn.resourcemanager.admin.address</name> ?
<value>master:8033</value> ?
</property> ?
<property> ?
<name>yarn.resourcemanager.webapp.address</name> ?
<value>master:8088</value> ?
</property>
到這里基本配置好了,把所有復制到其他的slave節點。
12、啟動hadoop
這里你可以進行環境變量設置
12.1、格式化namenode
[hadoop@master hadoop]$ cd /home/hadoop/hadoop-2.2.0/bin/ ?
[hadoop@master bin]$ ./hdfs namenode -format ?
12.2、啟動hdfs
[hadoop@master bin]$ cd ../sbin/ ?
[hadoop@master sbin]$ ./start-dfs.sh ?
這時候在master中輸入jps應該看到namenode和secondarynamenode服務啟動,slave中看到datanode服務啟動
12.3、啟動yarn
[hadoop@master sbin]$ ./start-yarn.sh ?
master中應該有ResourceManager服務,slave中應該有nodemanager服務
查看集群狀態: ? ?./bin/hdfs dfsadmin –report
查看文件塊組成: ?./bin/hdfsfsck / -files -blocks
查看各節點狀態: ? http://192.168.10.10:50070
查看resourcemanager上cluster運行狀態: ? ?http:// 192.168.10.11:8088
13、安裝中要注意的事項
13.1、注意版本,機器是32bit還是64位
13.2、注意依賴包的安裝
13.3、寫配置文件注意”空格“,特別是從別的地方copy的時候
13.4、關閉所有節點的防火墻
如果有看到類似"no route to host"這樣的異常,基本就是防火墻沒關
(1) 重啟后永久性生效: ?
開啟:chkconfig iptables on ?
關閉:chkconfig iptables off ?
(2) 即時生效,重啟后失效: ?
開啟:service iptables start ?
關閉:service iptables stop ?
13.5、開啟datanode后自動關閉
基本是因為namenode和datanode的clusterID不一致
13.6 no datanode to stop
刪除/tmp目錄下的
hadoop-daemon.sh代碼,腳本是通過pid文件來停止hadoop服務的,而集群配置是使用的默認配置,pid文件位于/tmp目錄下,對比/tmp目錄下hadoop.pid文件中的進程id和(ps -ax)查出來的進程id,發現兩個進程id不一致,終于找到了問題的根源。趕緊去更新hadoop的配置吧!修改hadoop-env.sh中的:HADOOP_PID_DIR = hadoop安裝路徑
14、運行測試例子
[hadoop@master bin]$ ./yarn jar ../share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar randomwriter /home/hadoop/dfs/input/ ?
這里要注意不要用 -jar,不然會報異常“Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/util/ProgramDriver”
[hadoop@master bin]$ ./yarn jar ../share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /home/hadoop/dfs/input/ /home/hadoop/dfs/output/ ?
在input下面新建兩個文件
$mkdir /dfs/input
$echo ‘hello,world’ >> input/file1.in
$echo ‘hello,ruby’ ?>> input/file2.in
./bin/hadoop fs -mkdir -p /home/hadoop/dfs/input
./bin/hadoop fs –put /home/hadoop/dfs/input /home/hadoop/test/test_wordcount/in
查看word count的計算結果
$bin/hadoop fs -cat /home/hadoop/test/test_wordcount/out/*
hadoop 1
hello ?1
ruby
轉載于:https://blog.51cto.com/davideylee/1382785
總結
以上是生活随笔為你收集整理的64位LINUX下hadoop2.2.0重新编译及安装步骤的全部內容,希望文章能夠幫你解決所遇到的問題。

- 上一篇: 在golang编程中总结的基础语法及常见
- 下一篇: [转]android之Apache Ht