hadoop 1.2.1 集群搭建

环境:
1. jdk 1.7
2. centos 6.5
3. VirtualBox-4.1.12-77245-Win.exe
4. hadoop 1.2.1

1、安装
搭建步骤如下:

1、创建用户组

    groupadd hadoop 添加一个组
    useradd hadoop -g hadoop 添加用户
修改主机名

2、jdk的安装

    这里安装的版本是jdk-7u9-linux-i586.tar.gz ,使用 tar -zsvf jdk-7u9-linux-i586.tar.gz -C /opt/ 命令将其解压到/opt目录下,并将解压后的文件夹jdk-7u9-linux-i586改名为java.
    jdk安装好就要配置环境变量了,使用vi /etc/profile命令编辑添加如下内容:
    export JAVA_HOME=/opt/java/
    exprot PATH=$JAVA_HOME/bin:$PATH
    配置好之后要用命令source /etc/profile使配置文件生效,这样jdk就安装完毕了。安装完之后不要忘了将所有者设置为hadoop。
使用命令chown -R hadoop:hadoop java/

3、hadoop的安装

    hadoop的版本是hadoop-0.20.2.tar.gz,也把它解压到/opt目录下面,改名为hadoop。
    hadoop也要设置环境变量,使用vi /etc/profile命令编辑添加如下内容:
    export HADOOP_HOME=/opt/hadoop
    export PATH=$HADOOP_HOME/bin:$PATH
    同样也要执行source /etc/profile使配置文件生效,然后执行命令使用命令chown -R hadoop:hadoop hadoop/将其所有者改为hadoop

4、修改地址解析文件/etc/hosts,加入

192.168.0.166 namenode master.hadoop
192.168.0.167 datanode1 slave1.hadoop
192.168.0.168 datanode2 slave2.hadoop
192.168.0.169 datanode3 slave3.hadoop
192.168.0.170 datanode4 slave4.hadoop
192.168.0.171 datanode5 slave5.hadoop

5、修改hadoop的配置文件

  首先切换到hadoop用户,su hadoop
  ①修改hadoop目录下的conf/hadoop-env.sh文件
    加入java的安装路径export JAVA_HOME=/opt/java/jdk
  ②把hadoop目录下的conf/core-site.xml文件修改成如下:

1
2 hadoop.tmp.dir
3 /hadoop
4
5
6 fs.default.name
7 hdfs://master:9000
8
9
10 dfs.name.dir
11 /hadoop/name
12

  ③把hadoop目录下的conf/ hdfs-site.xml文件修改成如下:

1
2 dfs.replication
3 3
4
5
6 dfs.data.dir
7 /hadoop/data
8

  ④把hadoop目录下的conf/ mapred-site.xml文件修改成如下:

1
2 mapred.job.tracker
3 master:9001
4
5
6 mapred.system.dir
7 /hadoop/mapred_system
8
9
10 mapred.local.dir
11 /hadoop/mapred_local
12

  ⑤把hadoop目录下的conf/ masters文件修改成如下:
    master
  ⑥把hadoop目录下的conf/ slaves文件修改成如下:
     namenode
datanode1
datanode2
datanode3
datanode4
datanode5

6、复制虚拟机

    在Virtual Box上安装好一台虚拟机后,如果能把虚拟机的硬盘文件(VDI文件)复制一份是不是就又有了一台全新的操作系统啦?这样可以省去几十分钟的安装时间呢,答案是肯定的,但是这个复制过程需要一个小技巧,复制出来的VDI文件无法在虚拟介质管理器中注册,因为每个VDI文件都有一个唯一的uuid,而VirtualBox不允许注册重复的uuid。
在VBox的安装目录下有一个VBoxManage.exe程序,它是VBox的命令行工具,很强大!!!!查看帮助可以执行“VBoxManage -h”。
复制虚拟机硬盘的命令“VBoxManage clonehd E:\VMDisk\Win2008.vdi E:\VMDisk\Win2008_new.vdi”,命令中不区分大小写,因为Win系统不区分大小写。可能有些童鞋看不懂上边的复制例子命令,这里再说一个格式“C:\progfile\Oracle\VBox\VBoxManage.exe <空格> clonehd <空格> 虚拟机硬盘路径 <空格> 生成的新虚拟机硬盘路径”。
在VirtualBox中,点击"新建"按钮,新建虚拟机:VirtualBox中新建虚拟硬盘”, 点击”现有”按钮, 使用复制的虚拟硬盘,比如OpenSoalris2.vdi.

7、SSH设置无密码验证

    使用 ssh-keygen -t rsa 来创建密钥,程序会问你存放的目录,如果不需要修改,直接回车两次即可

2.将你~/.ssh目录中的id_rsa.pub这个文件拷贝到你要登录的服务器的~/.ssh目录中,然后再运行以下命令来将公钥导入到~/.ssh/authorized_keys这个文件中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,注意是管道符是 >>
另外要注意请务必要将服务器上
~/.ssh权限设置为700
~/.ssh/authorized_keys的权限设置为600

这是linux的安全要求,如果权限不对,自动登录将不会生效
测试连接:
$ ssh datanode1
$ ssh datanode1

我们只需要配置从master向slaves发起SSH连接不需要密码就可以了,但这样只能在master(即在主机master)启动或关闭hadoop服务。

8、关闭防火墙

service iptables stop #停止
chkconfig iptables off #禁用
service iptables status

9、验证连接及端口

ssh 192.168.0.166 -p 9000
ssh 192.168.0.166 -p 9000

10、运行hadoop

    使用Hadoop用户,切换到hadoop/bin目录下
    格式化分布式文件系统./hadoop namenode -format
    执行命令./start-all.sh启动hadoop
    在master上执行jps命令查看运行的进程如下:

[hadoop@master hadoop]$ jps
3200 SecondaryNameNode
3271 JobTracker
3370 TaskTracker
3002 NameNode
3106 DataNode
5687 Jps

    在slave1和slave2上执行jps结果如下:
[hadoop@slave1 ~]$ jps
1477 DataNode
3337 Jps
1547 TaskTracker
    访问http://master:50070可以查看分布式文件系统的状态

11、运行单词统计程序

    WordCount是hadoop自带的实例,统计一批文本文件中各单词出现的资料,输出到指定的output目录中,输出目录如果已经存在会报错。
$ cd /opt/hadoop
$ hadoop fs -mkdir input
$ hadoop fs -copyFromLocal /opt/hadoop/*.txt input/
$ hadoop jar hadoop-0.20.2-examples.jar wordcount input output
$ hadoop fs -cat output/* #最后查看结果
运行结果如下:

13/06/16 19:32:26 INFO input.FileInputFormat: Total input paths to process : 4
13/06/16 19:32:26 INFO mapred.JobClient: Running job: job_201306161739_0002
13/06/16 19:32:27 INFO mapred.JobClient: map 0% reduce 0%
13/06/16 19:32:35 INFO mapred.JobClient: map 50% reduce 0%
13/06/16 19:32:36 INFO mapred.JobClient: map 100% reduce 0%
13/06/16 19:32:47 INFO mapred.JobClient: map 100% reduce 100%
13/06/16 19:32:49 INFO mapred.JobClient: Job complete: job_201306161739_0002
13/06/16 19:32:49 INFO mapred.JobClient: Counters: 18
13/06/16 19:32:49 INFO mapred.JobClient: Job Counters
13/06/16 19:32:49 INFO mapred.JobClient: Launched reduce tasks=1
13/06/16 19:32:49 INFO mapred.JobClient: Rack-local map tasks=2
13/06/16 19:32:49 INFO mapred.JobClient: Launched map tasks=4
13/06/16 19:32:49 INFO mapred.JobClient: Data-local map tasks=2
13/06/16 19:32:49 INFO mapred.JobClient: FileSystemCounters
13/06/16 19:32:49 INFO mapred.JobClient: FILE_BYTES_READ=179182
13/06/16 19:32:49 INFO mapred.JobClient: HDFS_BYTES_READ=363457
13/06/16 19:32:49 INFO mapred.JobClient: FILE_BYTES_WRITTEN=358510
13/06/16 19:32:49 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=133548
13/06/16 19:32:49 INFO mapred.JobClient: Map-Reduce Framework
13/06/16 19:32:49 INFO mapred.JobClient: Reduce input groups=10500
13/06/16 19:32:49 INFO mapred.JobClient: Combine output records=10840
13/06/16 19:32:49 INFO mapred.JobClient: Map input records=8968
13/06/16 19:32:49 INFO mapred.JobClient: Reduce shuffle bytes=179200
13/06/16 19:32:49 INFO mapred.JobClient: Reduce output records=10500
13/06/16 19:32:49 INFO mapred.JobClient: Spilled Records=21680
13/06/16 19:32:49 INFO mapred.JobClient: Map output bytes=524840
13/06/16 19:32:49 INFO mapred.JobClient: Combine input records=47258
13/06/16 19:32:49 INFO mapred.JobClient: Map output records=47258
13/06/16 19:32:49 INFO mapred.JobClient: Reduce input records=10840

你可能感兴趣的:(hadoop,Linux)