虚拟机搭建hadoop集群

整理文档下载地址:http://download.csdn.net/detail/ruishenh/6638309

1.虚拟机安装系统(个人安装系统是centos 6.x final版)

1.在虚拟机安装了三个系统(centos 6.x final版的)目前两个都是安装的,一个是在文件复制的。

2. 安装完系统后开始安装rz命令包(由于系统在window系统用crt操作linux系统了,所以依赖上了rz命令)

联网情况下:

yum install lrzsz

接下来输入两个yes

等到出现complete的英文就是ok了。

3.卸载原装openJDK

网上查的资料就是这样执行的,一切都运行完美通过

先查看

 rpm -qa | grep java

显示如下信息:

java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5

卸载:

rpm -e --nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5

只要是不报错,再执行

rpm -qa | grep java

显示没有任何东西了就是ok了

4.安装sun官方JDK文件

由于本人这儿已经下载下来了(jdk-6u30-linux-i586.bin);

所以直接在CRT中rz上传就好了命令如下

[[email protected]]# rz

rz waiting toreceive.

Starting zmodemtransfer. Press Ctrl+C to cancel.

100%83283 KB 3331 KB/s 00:00:250 Errors

[[email protected]]# ll

总用量 83372

-rw-r--r--. 1root root 85282052 1月 11 2012 jdk-6u30-linux-i586.bin

查看已经有了,这时候安装就好了

修改一下权限:

chmod 777  jdk-6u30-linux-i586.bin

接下来执行文件就好了:

./ jdk-6u30-linux-i586.bin

接下来会显示好多安装信息不用管直到出现下方信息就证明已经安装ok了

how it ismanaged and used, see:

http://java.sun.com/javase/registration/JDKRegistrationPrivacy.html

Press Enter tocontinue.....

(这儿敲一下键盘)

Done.

[[email protected]]# ll

总用量 83376

drwxr-xr-x. 10root root 4096 12月9 04:10 jdk1.6.0_30

-rwxrwxrwx. 1 root root 85282052 1月 11 2012 jdk-6u30-linux-i586.bin

5.接下来配置环境变量

<1>#

vi/etc/profile 
<2>在最后加入以下几行:

export JAVA_HOME=/usr/java/jdk1.6.0_30
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

<3> 然后生效文件

  source  /etc/profile

<4>检查

[[email protected] java]# java -version

java version"1.6.0_30"

Java(TM) SERuntime Environment (build 1.6.0_30-b12)

Java HotSpot(TM)Client VM (build 20.5-b03, mixed mode, sharing)

这就ok了

6.接下来修改一下主机名称

命令(hostname master)

192.168.1.12 master
192.168.1.11 slave1
192.168.1.13 slave2

7.关闭防火墙

[[email protected] java]# service iptables stop


iptables:清除防火墙规则:

[确定]

iptables:将链设置为政策 ACCEPT:filter [确定]

iptables:正在卸载模块:[确定]

8./etc/hosts 文件内容追加

192.168.1.12  master 
192.168.1.11  slave1 
192.168.1.13  slave2

9.

 vi /etc/ssh/sshd_config

(这一块是无密码验证,重启VM后在连接CRT连不上了所以后来又去掉了,姑且这一块先不管了,)

在PasswordAuthentication yes这一样注掉然后加上下边的

PasswordAuthentication no
AuthorizedKeysFile .ssh/authorized_keys
 

10.authorized_keys文件拷贝到两台slave主机

ssh-****** -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
 

11.远程scp文件

authorized_keys文件拷贝到两台slave主机

scp authorized_keys slave1:~/.ssh/   
scp authorized_keys slave2:~/.ssh/  

追加权限

注意如果权限不对就改一下权限

chmod g-w authorized_keys

这时就可以ssh登录直接进入而不用密码拉

12.下载hadoop文件上传到虚拟机中

本人下载的Hadoop 0.20.2,去apache官方网站下载即可。

上传上去后解压文件

/usr/local/hadoop/

接下来进入如下目录

[[email protected] hadoop]$ pwd
/usr/local/hadoop
[[email protected] hadoop]$ ll
总用量 7536
drwxr-xr-x.  2 hcr hcr   4096 12月 10 2012 bin
-rw-rw-r--.  1 hcr hcr  74035 2月  19 2010 build.xml
drwxr-xr-x.  4 hcr hcr   4096 2月  19 2010 c++
-rw-rw-r--.  1 hcr hcr 348624 2月  19 2010 CHANGES.txt
drwxr-xr-x.  2 hcr hcr   4096 10月 19 16:22conf
drwxr-xr-x. 13hcr hcr    4096 2月 19 2010 contrib
drwxr-xr-x.  7 hcr hcr   4096 12月 10 2012 docs
-rw-rw-r--.  1 hcr hcr   6839 2月  19 2010 hadoop-0.20.2-ant.jar
-rw-rw-r--.  2 hcr hcr 2689741 2月 19 2010 hadoop-0.20.2-core.jar
-rw-rw-r--.  1 hcr hcr 142466 2月  19 2010 hadoop-0.20.2-examples.jar
-rw-rw-r--.  1 hcr hcr 1563859 2月 19 2010 hadoop-0.20.2-test.jar
-rw-rw-r--.  1 hcr hcr  69940 2月  19 2010 hadoop-0.20.2-tools.jar
-rw-rw-r--.  2 hcr hcr 2689741 2月 19 2010 hadoop-core-0.20.2.jar
drwxr-xr-x.  2 hcr hcr   4096 12月 10 2012 ivy
-rw-rw-r--.  1 hcr hcr   8852 2月  19 2010 ivy.xml
drwxr-xr-x.  5 hcr hcr   4096 12月 10 2012 lib
drwxr-xr-x.  2 hcr hcr   4096 12月 10 2012librecordio
-rw-rw-r--.  1 hcr hcr  13366 2月  19 2010 LICENSE.txt
drwxrwxr-x.  4 hcr hcr   4096 10月 19 20:13logs
-rw-rw-r--.  1 hcr hcr    101 2月  19 2010 NOTICE.txt
-rw-rw-r--.  1 hcr hcr   1366 2月  19 2010 README.txt
drwxr-xr-x. 15hcr hcr    4096 12月 10 2012 src
drwxr-xr-x.  4 hcr hcr   4096 8月  12 01:12 tmp
drwxr-xr-x.  8 hcr hcr   4096 2月  19 2010 webapps
[[email protected]]$

然后把环境变量配置上吧,或者写一个脚本放到/usr/bin/下方指定到hadoop启动文件上。

# set hadooppath
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
 


进入conf配置目录

然后把文件修改成如下

[[email protected] conf]$ cat masters

master

[[email protected] conf]$ cat slaves

slave1

slave2

[[email protected] conf]$ cat core-site.xml

<?xmlversion="1.0"?>

<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>

<!-- Putsite-specific property overrides in this file. -->

<configuration>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/hadoop/tmp</value>

<description>A base for other temporarydirectories.</description>

</property>

<!-- filesystem properties -->

<property>

<name>fs.default.name</name>

<value>hdfs://master:9000</value>

</property>

<!-- OOZIE-->

<property>

<name>hadoop.proxyuser.hcr.hosts</name>

<value>*</value>

</property>

<property>

<name>hadoop.proxyuser.hcr.groups</name>

<value>hcr</value>

</property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

</configuration>

[[email protected]]$ cat hdfs-site.xml

<?xmlversion="1.0"?>

<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>

<!-- Putsite-specific property overrides in this file. -->

<configuration>

<property>

<name>dfs.replication</name>

<value>2</value>

<!--(备注:replication 是数据副本数量,默认为3,salve少于3台就会报错)-->

</property>

</configuration>

[[email protected]]$

[[email protected]]$ cat mapred-site.xml

<?xmlversion="1.0"?>

<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>

<!-- Putsite-specific property overrides in this file. -->

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>http://master:9001</value>

</property>

</configuration>

[[email protected]]$

把hadoop-env.sh中配置上jdk的环境变量,当然pids文件,日志目录文件都可以重新指定,但是个人测试搭建集群这个不主要。

export JAVA_HOME=/usr/java/jdk1.6.0_30

[[email protected] conf]$ cat hadoop-env.sh

# SetHadoop-specific environment variables here.

# The onlyrequired environment variable is JAVA_HOME.All others are

# optional. When running a distributed configuration itis best to

# set JAVA_HOMEin this file, so that it is correctly defined on

# remote nodes.

# The javaimplementation to use. Required.

# exportJAVA_HOME=/usr/lib/j2sdk1.5-sun

# Extra JavaCLASSPATH elements. Optional.

# exportHADOOP_CLASSPATH=

# The maximumamount of heap to use, in MB. Default is 1000.

# exportHADOOP_HEAPSIZE=2000

# Extra Javaruntime options. Empty by default.

# exportHADOOP_OPTS=-server

HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

# Commandspecific options appended to HADOOP_OPTS when specified

exportHADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS"

exportHADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote$HADOOP_SECONDARYNAMENODE_OPTS"

exportHADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote$HADOOP_DATANODE_OPTS"

exportHADOOP_BALANCER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_BALANCER_OPTS"

exportHADOOP_JOBTRACKER_OPTS="-Dcom.sun.management.jmxremote$HADOOP_JOBTRACKER_OPTS"

# exportHADOOP_TASKTRACKER_OPTS=

# The followingapplies to multiple commands (fs, dfs, fsck, distcp etc)

# exportHADOOP_CLIENT_OPTS

# Extra ssh options. Empty by default.

# exportHADOOP_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HADOOP_CONF_DIR"

# Where logfiles are stored. $HADOOP_HOME/logs bydefault.

# exportHADOOP_LOG_DIR=${HADOOP_HOME}/logs

# File namingremote slave hosts.$HADOOP_HOME/conf/slaves by default.

# exportHADOOP_SLAVES=${HADOOP_HOME}/conf/slaves

# host:pathwhere hadoop code should be rsync'd from.Unset by default.

# exportHADOOP_MASTER=master:/home/$USER/src/hadoop

# Seconds tosleep between slave commands. Unset bydefault. This

# can be usefulin large clusters, where, e.g., slave rsyncs can

# otherwisearrive faster than the master can service them.

# exportHADOOP_SLAVE_SLEEP=0.1

# The directorywhere pid files are stored. /tmp by default.

# exportHADOOP_PID_DIR=/var/hadoop/pids

# A stringrepresenting this instance of hadoop. $USER by default.

# exportHADOOP_IDENT_STRING=$USER

# The schedulingpriority for daemon processes. See 'mannice'.

# exportHADOOP_NICENESS=10

# set javaenvironment

exportJAVA_HOME=/usr/java/jdk1.6.0_30

[[email protected]]$

以上文件配置ok了后基本上主机配置完毕了。然后就是去执行

Scp 把master上的hadoop目录直接远程拷贝到slaves1和2上。

拷贝完后slave1上如下

[[email protected] hadoop]$ pwd

/usr/local/hadoop

[[email protected] hadoop]$ ll

总用量 4904

drwxr-xr-x. 2 hcr hcr4096 12月 10 2012 bin

-rw-r--r--. 1 hcr hcr74035 12月 10 2012build.xml

drwxr-xr-x. 4 hcr hcr4096 12月 10 2012 c++

-rw-r--r--. 1 hcr hcr348624 12月 10 2012CHANGES.txt

drwxr-xr-x. 2 hcr hcr4096 10月 19 00:11conf

drwxr-xr-x. 13hcr hcr 4096 12月 10 2012 contrib

drwxr-xr-x. 7 hcr hcr4096 12月 10 2012 docs

-rw-r--r--. 1 hcr hcr6839 12月 10 2012hadoop-0.20.2-ant.jar

-rw-r--r--. 1 hcr hcr 2689741 12月 10 2012 hadoop-0.20.2-core.jar

-rw-r--r--. 1 hcr hcr142466 12月 10 2012hadoop-0.20.2-examples.jar

-rw-r--r--. 1 hcr hcr 1563859 12月 10 2012 hadoop-0.20.2-test.jar

-rw-r--r--. 1 hcr hcr69940 12月 10 2012hadoop-0.20.2-tools.jar

drwxr-xr-x. 2 hcr hcr4096 12月 10 2012 ivy

-rw-r--r--. 1 hcr hcr8852 12月 10 2012ivy.xml

drwxr-xr-x. 5 hcr hcr4096 12月 10 2012 lib

drwxr-xr-x. 2 hcr hcr4096 12月 10 2012librecordio

-rw-r--r--. 1 hcr hcr13366 12月 10 2012LICENSE.txt

drwxrwxr-x. 3 hcr hcr4096 10月 19 04:00logs

-rw-r--r--. 1 hcr hcr101 12月 10 2012NOTICE.txt

-rw-r--r--. 1 hcr hcr1366 12月 10 2012README.txt

drwxr-xr-x. 15hcr hcr 4096 12月 10 2012 src

drwxr-xr-x. 4 hcr hcr4096 8月 5 02:18 tmp

drwxr-xr-x. 8 hcr hcr4096 12月 10 2012webapps

[[email protected]]$

接下来所有的copy完毕后开始要进入启动hadoop相关动作上了。

先格式化一下namenode

[[email protected] hadoop]$ bin/hadoop namenode –format

成功后,

接下来启动ok 了。

[[email protected] hadoop]$ bin/start-all.sh

startingnamenode, logging to/usr/local/hadoop/bin/../logs/hadoop-hcr-namenode-master.out

slave1: startingdatanode, logging to/usr/local/hadoop/bin/../logs/hadoop-hcr-datanode-slave1.out

slave2: startingdatanode, logging to/usr/local/hadoop/bin/../logs/hadoop-hcr-datanode-slave2.out

master: startingsecondarynamenode, logging to/usr/local/hadoop/bin/../logs/hadoop-hcr-secondarynamenode-master.out

startingjobtracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hcr-jobtracker-master.out

slave1: startingtasktracker, logging to/usr/local/hadoop/bin/../logs/hadoop-hcr-tasktracker-slave1.out

slave2: startingtasktracker, logging to/usr/local/hadoop/bin/../logs/hadoop-hcr-tasktracker-slave2.out

启动成功后查看一下java 进程jps

[[email protected]]$ jps

8349 Jps

8207SecondaryNameNode

8281 JobTracker

8055 NameNode

这时候SNN,NN,jobtracker都有了。

数据节点查看一下

[[email protected]]$ jps

4750 Jps

4705 TaskTracker

4608 DataNode

[[email protected]]$

数据节点datanode 和taskTracker也都有了。

然后就能看到相关目录了

[[email protected] hadoop]$ hadoop fs –ls /

这个时候进入

http://master:50070/dfshealth.jsp

查看页面

虚拟机搭建hadoop集群

Namenode起来了。

然后点击进入Browse the filesystem

虚拟机搭建hadoop集群

Datanode 也起来了。

然后去看看jobtracker

虚拟机搭建hadoop集群

能访问也起来了。

接下来就算安装成功了。