虚拟机搭建hadoop集群

来源:互联网 发布:鸟哥的linux私房菜 pdf 编辑:程序博客网 时间:2024/05/16 10:23

整理文档下载地址: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.115rpm -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上传就好了命令如下

 

[root@localhostjava]# rz

rz waiting toreceive.

Starting zmodemtransfer.  Press Ctrl+C to cancel.

  100%  83283 KB 3331 KB/s 00:00:25      0 Errors

 

[root@localhostjava]# 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.

[root@localhostjava]# 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_30export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/bin

<3> 然后生效文件

  source  /etc/profile

<4>检查

[root@localhost 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 master192.168.1.11 slave1192.168.1.13 slave2

7.关闭防火墙

[root@localhost 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 noAuthorizedKeysFile .ssh/authorized_keys 

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

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsacat ~/.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/

 

接下来进入如下目录

[hcr@master hadoop]$ pwd/usr/local/hadoop[hcr@master hadoop]$ ll总用量 7536drwxr-xr-x.  2 hcr hcr   4096 12月 10 2012 bin-rw-rw-r--.  1 hcr hcr  74035 2月  19 2010 build.xmldrwxr-xr-x.  4 hcr hcr   4096 2月  19 2010 c++-rw-rw-r--.  1 hcr hcr 348624 2月  19 2010 CHANGES.txtdrwxr-xr-x.  2 hcr hcr   4096 10月 19 16:22confdrwxr-xr-x. 13hcr hcr    4096 2月 19 2010 contribdrwxr-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.jardrwxr-xr-x.  2 hcr hcr   4096 12月 10 2012 ivy-rw-rw-r--.  1 hcr hcr   8852 2月  19 2010 ivy.xmldrwxr-xr-x.  5 hcr hcr   4096 12月 10 2012 libdrwxr-xr-x.  2 hcr hcr   4096 12月 10 2012librecordio-rw-rw-r--.  1 hcr hcr  13366 2月  19 2010 LICENSE.txtdrwxrwxr-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.txtdrwxr-xr-x. 15hcr hcr    4096 12月 10 2012 srcdrwxr-xr-x.  4 hcr hcr   4096 8月  12 01:12 tmpdrwxr-xr-x.  8 hcr hcr   4096 2月  19 2010 webapps[hcr@masterhadoop]$

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

# set hadooppathexport HADOOP_HOME=/usr/local/hadoopexport PATH=$PATH:$HADOOP_HOME/bin 


进入conf配置目录

然后把文件修改成如下

[hcr@master conf]$ cat masters

master

[hcr@master conf]$ cat slaves

slave1

slave2

[hcr@master 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>

 

 

[hcr@masterconf]$ 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>

[hcr@masterconf]$

[hcr@masterconf]$ 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>

[hcr@masterconf]$

 

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

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

 

[hcr@master 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

[hcr@masterconf]$

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

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

拷贝完后slave1上如下

[hcr@slave1 hadoop]$ pwd

/usr/local/hadoop

[hcr@slave1 hadoop]$ ll

总用量 4904

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

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

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

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

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

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

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

-rw-r--r--.  1 hcr hcr   6839 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 hcr 142466 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 hcr  69940 12月 10 2012hadoop-0.20.2-tools.jar

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

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

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

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

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

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

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

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

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

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

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

[hcr@slave1hadoop]$

 

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

 

先格式化一下namenode

[hcr@master hadoop]$ bin/hadoop namenode –format

成功后,

接下来启动ok 了。

[hcr@master 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

[hcr@masterhadoop]$ jps

8349 Jps

8207SecondaryNameNode

8281 JobTracker

8055 NameNode

 

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

数据节点查看一下

[hcr@slave1hadoop]$ jps

4750 Jps

4705 TaskTracker

4608 DataNode

[hcr@slave1hadoop]$

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

 

 

然后就能看到相关目录了

[hcr@master hadoop]$ hadoop fs –ls /

 

这个时候进入

http://master:50070/dfshealth.jsp

查看页面


 

Namenode起来了。

然后点击进入Browse the filesystem


Datanode 也起来了。

 

然后去看看jobtracker

 

能访问也起来了。

 

 

 

接下来就算安装成功了。