(本次安装是在64位 Cent OS的环境下)
1. 创建用户
useradd -d /home/user1 -s /bin/bash user1
2. 安装JDK
2.1 下载JDK版本
注明: 在下载前先检查本机的信息,再下载正确的版本,我之前就犯了一次错误。具体请参见:点击打开链接
(该链接为64位 JDK7.45版本)
wget http://download.oracle.com/otn-pub/java/jdk/7u45-b18/jdk-7u45-linux-x64.tar.gz?AuthParam=1389323597_367ccdb7ffa961c61207eb2f36f697a9
tar -xvf jdk-7u45-linux-x64.tar.gz?AuthParam=1389323597_367ccdb7ffa961c61207eb2f36f697a9
2.2 配置环境变量
以下操作需要用root用户操作
vi /etc/profile
在profile最后加上
JAVA_HOME=/home/shawn/jdk1.7.0_45
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME
export CLASSPATH
export PATH
保存退出后
source /etc/profile
检查安装是否成功
java -version
显示:
表示安装成功。
3. 安装Hadoop
我选择的是Hadoop当前最新稳定版本2.2.0
如果机器是64位的,那就稍微麻烦一点,需要先进行手动编译,如果是32位的,略过3.1,直接下载安装包,然后,进行3.2的解压就可以了。
wget http://apache.fayea.com/apache-mirror/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz
tar -xvf hadoop-2.2.0.tar.gz
3.1 编译Hadoop
先从官网下载hadoop源码,解压
wget http://apache.fayea.com/apache-mirror/hadoop/common/hadoop-2.2.0/hadoop-2.2.0-src.tar.gz解压后可以看到pom.xml文件,因此用maven打包即可。
tar -xvf hadoop-2.2.0-src.tar.gz
如果本机没有安装maven,去网上搜一下吧。:—)
当然如果有maven,也不要着急打包,否则你会很郁闷的中途失败。
hadoop的编译需要依赖以下几个包,用yum安装好就可以了
3.1.1 安装protoc2.5.0
先安装几个依赖包
yum install gcc
yum intall gcc-c++
yum install make
然后安装protocol2.5.0
wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
tar protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure
执行完了以后分别执行
make最后设置以下环境变量
make check
make install
我是在/etc/profile中添加
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
保存退出后
source /etc/profile
用
protoc -version检查以下安装是否成功
3.1.2 其他
之后,还有另外的三个依赖包
yum install cmake
yum install openssl-devel
yum install ncurses-devel
3.1.3 修改bug
依赖包,已经安装成功,还是不要先记着编译,经验之谈,先修改编译过程中的一个bug
这是hadoop-auth项目下的一个编译错误。根据你之前的下载地址进入到hadoop-auth项目目录
cd ~/softwares/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth
vi 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>
3.1.4 编译
做好以上准备工作以后,就可以开始编译了。当然如果编译的过程中还有其他错误,把错误信息帖出来google一下,应该就可以有解决办法了
mvn clean package -Pdist,native -DskipTests -Dtar
编译的过程根据机器以及网络环境的情况,我这里用了20分钟。
当显示:
恭喜你,已经编译成功了
我们可以在../hadoop-dist/target 目录下看到我们最终的项目文件
3.2 解压Hadoop
(解压(我是安装在用户家目录下))
将hadoop-2.2.0.tar.gz 解压到你的安装目录下就可以。
4. 配置Hadoop
对于Hadoop的配置来说,这个完全根据实际情况来定,单机,集群的都有所不同,我这里只是示范一下单机版的。
基本是一些必须要配的基础参数。
4.1 hadoop-env.sh
JAVA_HOME=/home/user1/jdk1.7.0_45
4.2 yarn-env.sh
JAVA_HOME=/home/user1/jdk1.7.0_45
4.3 core-site.xml
添加以下配置:(Hadoop 2.2.0 的配置项较之前版本有比较大的区别,可以在官网找到其默认配置。官网:Hadoop官网)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>~/temp</value>
</property>
</configuration>
4.4 hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/shawn/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/shawn/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
5 启动Hadoop
5.1 配置SSH免密码登录
cd ~/.ssh
ssh-keygen -t rsa -P ""
cat id_rsa.pub >> authorized_keys
chmod 700 authorized_keys
在配置SSH免密码登录的时候,遇到一些很郁闷的问题,总是不能成功,在浏览了/var/log/sercurity 的日志以后,发现,目录的权限有问题。
在试了很多次以后,得出:
chmod -R 710 .ssh
cd .ssh
ls -al
chmod -R 644 authorized_keys
chmod -R 600 id_rsa
chmod -R 644 id_rsa.pub
chmod -R 644 known_hosts
在这样的权限分配下,SSH可以实现免密码登录,否则会有permission too open的问题。我的安装环境是64 CentOS,不知道其他的系统下会不会有这个问题。
5.1 对hdfs进行格式化
cd ~/hadoop2.2.0/bin
./hdfs namenode -format
5.2 启动所有服务
cd ~/hadoop2.2.0/sbin
5.2.1 启动所有服务
./start-all.sh
start-all 是用来启动hadoop下的所有服务的,这样做有风险,就是有些服务项我们并没有配置,但是脚本也会根据默认配置启动,因此会报错。
此处也可以根据官网说明,来根据需要启动所需要的服务,在启动前可以在环境变量中设置$HADOOP_CONF_DIR
这是是hadoop的配置目录,在../hadoop2.2.0/etc/hadoop下
5.2.1 启动namenode
$ ./hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start namenode
显示:
可以查看以下输出文件,检查运行是否成功,
如果没有Error的提示,说明已经成功启动,log信息如下
5.2.2 启动datanode
$ ./hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start datanode
5.2.3 启动Resource Manager
$./yarn-daemon.sh --config $HADOOP_CONF_DIR start resourcemanager
5.2.4 启动Node Manager
$ ./yarn-daemon.sh --config $HADOOP_CONF_DIR start nodemanager
其他的我不需要了,至此,我们的hadoop就算安装成功了。
5.2.5 验证
对于Hadoop安装的验证有两种方式,第一个是看相应的进程是否已经启动,第二个是通过查看控制台数据
5.2.5.1 JPS
$ jps当显示
时,说明我们已经启动了NameNode,ResourceManager,NodeManager,DataNode
5.2.5.2 控制台
我们还可以通过,控制台进行验证,在浏览器上输入以下地址,检查是否启动成功
NameNode
http://ipaddress:50070/
ResourceManager
http://ipaddress:8088
NodeManager
http://ipaddress:19888