Chinaunix首页 | 论坛 | 博客
  • 博客访问: 825168
  • 博文数量: 91
  • 博客积分: 2544
  • 博客等级: 少校
  • 技术积分: 1885
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-12 09:08
文章存档

2016年(10)

2014年(2)

2013年(4)

2012年(23)

2011年(23)

2010年(13)

2009年(14)

2007年(2)

分类: LINUX

2016-04-14 15:54:55


                  在linux系统上安装hadoop
说明:
   我的系统是centos 5.4

1, 添加hadoop管理账号 hadoop-user

useradd hadoop-user

2, 修改主机名

vi /etc/hosts

192.168.0.4 master

192.168.0.3 node1

192.168.0.5 node2

3, 开启ssh服务,并把ssh设置成无密码登录。

注意要使用用户hadoop-user启动,才不会出问题。不能用root启动。

(1)在NameNode 上实现无密码登录本机:
$ ssh-keygen
直接回车,完成后会在~/.ssh/生成两个文件:id_dsa 和id_dsa.pub。这两个是成对
出现,类似钥匙和锁。再把id_dsa.pub 追加到授权key 里面(当前并没有authorized_keys
文件):$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys。完成后可以实现无密码
登录本机:$ ssh localhost。
(2)实现NameNode 无密码登录其他DataNode:
把NameNode 上的id_rsa.pub 文件追加到dataNode 的authorized_keys 内( 以
192.168.0.3 节点为例):
a. 拷贝NameNode 的id_dsa.pub 文件:
$ scp id_dsa.pub hadoop-user
b. 登录192.168.0.3,执行$ cat id_dsa.pub >> .ssh/authorized_keys
其他的dataNode 执行同样的操作。
注意:如果配置完毕,如果namenode 依然不能访问datanode,可以修改datanode 的
authorized_keys:$ chmod 600 authorized_keys。

注意,如果还是提示登陆,则一般是权限问题,把 权限改成这样就一般能够解决:

chmod 700 ./ssh

chmod 700 /home/username

chmod 600 ./ssh/authorized_keys

4, 关闭防火墙

/etc/init.d/iptables stop



5, 安装jdk

5.1, 下载jdk

选中接收协议规定。 可能需要注册一个免费的账号,没关系,注册一个账号即可。

我这里选择的是 : jdk-6u14-linux-i586-rpm.bin这个包。

5.2, 安装jdk
把jdk-6u14-linux-i586-rpm.bin 放到一个目录中,并添加可执行权限:
chmod a+x jdk-6u14-linux-i586-rpm.bin
直接执行
./jdk-6u14-linux-i586-rpm.bin
按照提示一路同意,回车。完成安装。
最后安装好后的jdk的路径是在/usr/java/ 下面。

5.3, 配置jdk 运行路径
安装后,添加如下语句到/etc/profile 中:
export JAVA_HOME=/usr/java/jdk1.6.0_14/
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
注意:每台机器的java 环境最好一致。安装过程中如有中断,切换为root 权限来安装。
java -version 如果出现相关JDK版本信息,证明成功


6, 安装hadoop

6.1 下载


6.2 安装
cd /home/hadoop-user/
tar xzvf  hadoop-0.20.2.tar.gz

6.3 添加hadoop的配置路径

export HADOOP_HOME=/home/hadoop-user/hadoop-0.20.2/hadoop-0.20.2
export PATH=$HADOOP_HOME/bin:$PATH

6.4 配置hadoop
hadoop的主要的配置文件在$HADOOP_HOME/conf下

(1)在conf/hadoop-env.sh 中配置Java 环境(namenode 与datanode 的配置相同):
   $ vim hadoop-env.sh
   $ export JAVA_HOME=/home/hexianghui/jdk1.6.0_14

(2)配置conf/masters 和conf/slaves 文件:(只在namenode 上配置)
   masters文件中添加一行: 192.168.0.4
   slaves文件中添加两行:
    192.168.0.3
    192.168.0.5

(3)配置conf/core-site.xml, conf/hdfs-site.xml 及conf/mapred-site.xml(简单配置,datanode 的配置相同)

core-site.xml:





hadoop.tmp.dir
/home/hadoop-user/tmp # 注意,不要创建tmp目录
A base for other temporary directories.




fs.default.name
hdfs://192.168.0.4:9000




hdfs-site.xml:( replication 默认为3,如果不修改,datanode 少于三台就会报错)



dfs.name.dir
/home/hadoop-user/name/ #hadoop的name目录路径,不要创建该目录  


dfs.data.dir
/home/hadoop-user/data/ #hadoop的data目录路径,不要创建该目录



dfs.replication
1




mapred-site.xml:



mapred.job.tracker
192.168.0.4:9001




6.5、启动所有hadoop守护进程
先进入hadoop-0.20.2/bin,首先格式化文件系统:
$ hadoop namenode –format

启动Hadoop的所有守护进程:
# ./start-all.sh

说明:
在bin/下面有很多启动脚本,可以根据自己的需要来启动。
* start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack
* stop-all.sh 停止所有的Hadoop
* start-mapred.sh 启动Map/Reduce守护。包括Jobtracker和Tasktrack
* stop-mapred.sh 停止Map/Reduce守护
* start-dfs.sh 启动Hadoop DFS守护.Namenode和Datanode
* stop-dfs.sh 停止DFS守护

#查看运行进程
[root@master bin]# jps
6813 NameNode
7278 Jps
7164 JobTracker
7047 SecondaryNameNode
出现4个这样的进程,且datanode没有error,同时访问ui正常才算成功。

查看集群状态:
$ hadoop dfsadmin -report

用web查看:
ui: --web UI for HDFS name node(s)
    --web UI for MapReduce job tracker(s)
       --web UI for task tracker(s)

6.6, 运行实例
运行wordcount.java 程序

在hadoop的源码包里有一个wordcount的例子,可以直接运行,验证安装是否正确。

hadoop-0.20.1-examples.jar 是wordcount的jar包

wordcount 是类名

cd /home/hadoop-user/hadoop-0.20.2

(1)先在本地磁盘建立两个输入文件file01 和file02:
$ echo “Hello World Bye World” > file01
$ echo “Hello Hadoop Goodbye Hadoop” > file02
(2)在hdfs 中建立一个input 目录:$ hadoop fs –mkdir input
(3)将file01 和file02 拷贝到hdfs 中:
$ hadoop fs –copyFromLocal  /home/hadoop-user/soft/file0* input
(4)执行wordcount:
$ hadoop jar hadoop-0.20.1-examples.jar wordcount input output
(5)完成之后,查看结果:
$ hadoop fs -cat output/part-r-00000

------------------- 运行结果--------------
Bye 1
Goodbye 1
Hadoop 2
Hello 2
World 2
------------------------------------------

可以查看运行的job和结果


阅读(2287) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~