搭建步骤如下: 一、首先是搞好master 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/jdk exprot PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/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= H A D O O P H O M E / b i n : HADOOP_HOME/bin: HADOOPHOME/bin:PATH 同样也要执行source /etc/profile使配置文件生效,然后执行命令使用命令chown -R hadoop:hadoop hadoop/将其所有者改为hadoop 4、修改地址解析文件/etc/hosts,加入 192.168.137.110 master 192.168.137.111 slave1 192.168.137.112 slave2 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文件修改成如下: master slave1 slave2 6、复制虚拟机 我使用Virtual Box的克隆功能,将主机master完全克隆两份:slave1和slave2,并修改相应的主机名和IP地址,这样就可以简单地保持hadoop环境基本配置相同。 7、SSH设置无密码验证 切换到Hadoop用户,在Hadoop家目录下面创建.ssh目录,并在master节点上生成密钥对:ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa 。然后一直按[Enter]键,按默认的选项生成密钥对保存在.ssh/id_rsa文件中。 然后执行如下命令:$ ssh ~/.ssh$ cp id_rsa.pub authorized_keys$ scp authorized_keys slave1:/home/hadoop/.ssh$ scp authorized_keys slave2:/home/hadoop/.ssh 执行远程复制文件的时候记得要把slave1和slave2的防火墙关掉。复制完毕后记得要到slave1和slave2去修改该文件的权限。从master向slave1和slave2发起SSH连接,第一次登录时需要输入密码,以后就不需要了。$ ssh slave1$ ssh slave2我们只需要配置从master向slaves发起SSH连接不需要密码就可以了,但这样只能在master(即在主机master)启动或关闭hadoop服务。 8、运行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可以查看分布式文件系统的状态 9、运行单词统计程序 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 运行该程序一定得注意将slave1和slave2的防火墙给关闭,否则会报异常的。
