编译安装hadoop2.2.0(系统为CentOS,完全避免运行时出现系统版本冲突)
boy 2014-01-17 12:36:30 添加专门用户
# groupadd my_term
# useradd -g my_term myhadoop
设置用户口令为mypassword
# passwd myhadoop
建一个专用目录
# mkdir /home/myhadoop/res
把相关软件包都下载到这里
安装JDK
# cd /home/myhadoop/res
# tar -zvxf jdk-7u5-linux-x64.tar.gz
mv jdk1.7.0_05 /home/myhadoop/jdk1.7.0_05
安装基本编译程序
yum -y install svn ncurses-devel gcc*
yum -y install lzo-devel zlib-devel autoconf automake libtool cmake openssl-devel ncurses-devel
安装maven
cd /home/myhadoop/res
tar zxvf apache-maven-3.1.1-bin.tar.gz
mv apache-maven-3.1.1 /home/myhadoop/maven
安装protobuf
tar zxvf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure
make && make install
编译hadoop源代码
cd /home/myhadoop/res
tar -zvxf hadoop-2.2.0-src.tar.gz
cd hadoop-2.2.0-src
在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>
在hadoop-hdfs-project/hadoop-hdfs/pom.xml文件中
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<excludePackageNames>org.apache.hadoop.hdfs.protocol.proto</excludePackageNames>
</configuration>
后边加上
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
执行
/home/myhadoop/maven/bin/mvn clean package -Pdist,native -DskipTests -Dtar
cp hadoop-dist/target/hadoop-2.2.0.tar.gz ../hadoop-2.2.0.tar.gz
安装hadoop
cd /home/myhadoop/res
tar -zvxf hadoop-2.2.0.tar.gz
mv hadoop-2.2.0 /home/myhadoop/hadoop
设置环境变量
# vi /etc/profile //在最后加上以下内容
JAVA_HOME=/home/myhadoop/jdk1.7.0_05
export JAVA_HOME
export HADOOP_HOME=/home/myhadoop/hadoop
CLASSPATH=/home/myhadoop/jdk1.7.0_05/lib:/home/myhadoop/jdk1.7.0_05/jre/lib:.
export CLASSPATH
export MAVEN_HOME=/home/myhadoop/maven
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH
JRE=/home/myhadoop/jdk1.7.0_05/jre
export JRE
重载
source /etc/profile
免密码ssh设置
现在确认能否不输入口令就用ssh登录localhost:
$ ssh localhost
如果不输入口令就无法用ssh登陆localhost,执行下面的命令:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
建相关目录
mkdir /home/myhadoop/hadoop/dir
mkdir /home/myhadoop/hadoop/dir/tmp
mkdir /home/myhadoop/hadoop/dir/dfs
mkdir /home/myhadoop/hadoop/dir/dfs/name
mkdir /home/myhadoop/hadoop/dir/dfs/data
mkdir /home/myhadoop/hadoop/dir/mr
mkdir /home/myhadoop/hadoop/dir/mr/tmp
mkdir /home/myhadoop/hadoop/dir/mr/local
配置
hadoop-env.sh中修改
export JAVA_HOME=/home/myhadoop/jdk1.7.0_05
core-site.xml配置文件
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/apps/hadoop/dir/tmp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:8020</value>
<description>The name of the default file system. Either the literal string "local" or a host:port for NDFS.</description>
</property>
</configuration>
hdfs-site.xml配置文件
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/apps/hadoop/dir/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/apps/hadoop/dir/dfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
复制mapred-site.xml.template成mapred-site.xml
修改mapred-site.xml
<configuration>
<!-- <property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property> 如要启用yarn就去掉注释-->
<property>
<name>mapreduce.cluster.temp.dir</name>
<value>file:/apps/hadoop/dir/mr/tmp</value>
<final>true</final>
</property>
<property>
<name>mapreduce.cluster.local.dir</name>
<value>file:/apps/hadoop/dir/mr/local</value>
<final>true</final>
</property>
</configuration>
yarn-site.xml配置文件
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>shuffle service that needs to be set for Map Reduce to run</description>
</property>
修改目录属性
chown -R myhadoop /home/myhadoop
格式化 namenode
/home/myhadoop/hadoop/bin/hdfs namenode -format
开始守护进程
/home/myhadoop/hadoop/sbin/start-dfs.sh
开始 yarn守护进程
/home/myhadoop/hadoop/sbin/start-yarn.sh
或
/home/myhadoop/hadoop/sbin/start-all.sh
看看成功不
jps
5949 SecondaryNameNode
6084 ResourceManager
5653 NameNode
5784 DataNode
恭喜您!