Hadoop 实践入门(一)

2014-11-24 03:24:39 · 作者: · 浏览: 0

1 实验环境搭建

1.1 准备工作

ubuntu/redhat

JDK/openjdk

Hadoop

Eclipse

vmvare/virtureBox

1.1.1 ubuntu 安装

下载最新版本ubuntu 11.10。

安装注意事项:

1、关闭防火墙:shell命令 sudo ufw disable。不关闭有可能造成master slave 通信失败。出现连接超时,重连错误。可以通过指定iptables 实现端口过滤。

2、安装ssh(用于master和slave远程登录):sudo apt-get install ssh

1.1.2 安装jdk

1)解压sun jdk压缩包到指定的文件夹。

sudo vi /etc/profile 或者 etc nano /etc/profile

配置/etc/profile,加入:
export JAVA_HOME=/usr/java/jdk1.6.0_22

export JRE_HOME=/usr/java/jdk1.6.0_22/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

2)可以使用openjdk sudo apt-get insall open-jdk-6 或者通过软件中心。

验证 shell命令 :java -version 看是否与你的版本号一致

1.1.3 安装hadoop

在每台机器上相同用户的home根目录下解压,hadoop-0.20.2.tar.gz 配置conf/hadoop-env.sh文件。 增加 export JAVA_HOME =/usr/lib/jvm/java-6-openjdk 这里修改为你的jdk的安装位置。

1.2 伪分布式搭建

Hadoop可以在单电商以为分布分布式模式运行,用不同的java进程模拟分布式中的中的各类节点namenode,datanode,jobtracker,tasktracker,secondary namenode

1.2.1 hadoop配置

hadoop 0.2.0.2之后需要修改core-site.xml\hdfs-site.xml 以及 mapred-site.xml

配置文件如下:

core-site.xml 配置核心内容,其中fs.default.name 为hdfs地址;tmp为hadoop.tnp.dir为临时文件

fs.default.name

hdfs://localhost:49000

hadoop.tmp.dir

/home/hadooper/hadooptmp

注意事项:一定要指定,相同的用户名,并且tmp一定要设置,否则会出现权限问题。导致hadoop启动失败。也可以通过chmod 命令来改变默认tmp的权限。默认tmp路径为:/usr/tmp。推荐第一种方式。

hdfs-site.xml 设置 hdfs 参数

dfs.replication

1

这里dfs.replication指块的副本数。副本数具体策略可参加见hadoop官方指南。

mapred-site.xml 文件的修改

mapred.job.tracker

localhost:49001

这个设置了jobtracker的端口。

注意端口的选择一定要恰当,尤其是集群的配置。默认的9000和9001很容易被ubuntu中其他进程占用,导致datanode失效,因此选择没有占用的49000 和49001。笔者,曾经就曾困扰与此。集群配置中将再次强调。

1.2.2 ssh设置

因为master需要访问datanode因此需要免密码ssh

设置方法:

ssh-keygen -t rsa然后一直按回车

完成后,在home跟目录下会产生隐藏文件夹.ssh

cd .ssh

之后ls 查看文件

cp id_rsa.pub authorized_keys

测试:

ssh localhost发现链接成功,并且无需密码。

1.2.3 hadoop运行

在hadoop安装目录下:

首先 bin/hadoop namenode -format格式化文件系统

然后 bin/start-all.sh 来启动守护进程。

利用java 命令 jps 查看进程。或者通过 网址:localhost:50070 localhost:50030来查看是否成功。

1.3 集群搭建

如上所述安装ubuntu 并且拥有相同用户。安装jdk ,安装hadoop。配置jdk路径等。

1.3.1 主机信息:

机器名 IP地址 作用
Node1 192.168.234.128 NameNode、JobTracker
Node2 192.168.234.129 DataNode、TaskTracker
Node3 192.168.234.130 DataNode、TaskTracker

修改每台机器上的hosts

sudo vi /etc/hosts

192.168.1.31 node1

192.168.1.32 node2

192.168.1.33 node3

1.3.2 ssh 设置

把NameNode 上的id_dsa.pub 文件追加到DataNode 的authorized_keys 内:

a. 拷贝NameNode 的id_dsa.pub 文件:

$ scp id_dsa.pub hadooper@node2:/home/hadoop/

b. 登录node2,执行

$ cat id_dsa.pub >> .ssh/authorized_keys

在所有datanode上执行相同的操作。

验证:从node1

ssh node2

exit

ssh node3

exit

如果全部免密码登录则成功

1.3.3 配置hadoop

配置conf/masters 和conf/slaves 文件

Masters

node1

Slaves

node2

node3

core-site mapred-site 和hdfs-site 和伪分布配置基本相同.只是对应地址,localhost换成了namenode的名称,node1。

q 配置conf/core-site.xml

fs.default.name

hdfs://node1:49000

仍然注意端口,在运行时如果datanode连接不上namenode,有可能是由于