hadoop集群环境的搭建
今天终于把hadoop集群环境给搭建起来了,能够运行单词统计的示例程序了。
集群信息如下:
注:master即使master又是slave.
搭建步骤如下:
一、首先是搞好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=$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.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 <property> 2 <name>hadoop.tmp.dir</name> 3 <value>/hadoop</value> 4 </property> 5 <property> 6 <name>fs.default.name</name> 7 <value>hdfs://master:9000</value> 8 </property> 9 <property> 10 <name>dfs.name.dir</name> 11 <value>/hadoop/name</value> 12 </property>
③把hadoop目录下的conf/ hdfs-site.xml文件修改成如下:
1 <property> 2 <name>dfs.replication</name> 3 <value>3</value> 4 </property> 5 <property> 6 <name>dfs.data.dir</name> 7 <value>/hadoop/data</value> 8 </property>
④把hadoop目录下的conf/ mapred-site.xml文件修改成如下:
1 <property> 2 <name>mapred.job.tracker</name> 3 <value>master:9001</value> 4 </property> 5 <property> 6 <name>mapred.system.dir</name> 7 <value>/hadoop/mapred_system</value> 8 </property> 9 <property> 10 <name>mapred.local.dir</name> 11 <value>/hadoop/mapred_local</value> 12 </property>
⑤把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的防火墙给关闭,否则会报异常的。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
hadoop中datanode无法启动,报Caused by: java.net.NoRouteToHostException: No ro...
今天把hadoop环境给搭起来了,在master上面启动hadoop后,jps查看进程,SecondaryNameNodeNameNode JpsDataNodeJobTrackerTaskTracker都没问题。但是去 http://master:50070/dfshealth.jsp查 看,live nodes为0。所以我到slave1和slave2上面去执行jps查看进程,结果都没有datanode进程,也就是说datanode没有启动成 功,所以我就到logs里面去执行less hadoop-hadoop-datanode-slave2.log,发现报错的内容如下: 2013-06-11 02:22:13,637 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG: /** STARTUP_MSG: Starting DataNode STARTUP_MSG: host = slave2/192.168.137.112 STARTUP_MSG: args = [] STARTUP_MSG: vers...
- 下一篇
HDFS中JAVA API的使用
HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件、删除文件、读取文件内容等操作。下面记录一下使用JAVA API对HDFS中的文件进行操作的过程。 对分HDFS中的文件操作主要涉及一下几个类: Configuration类:该类的对象封转了客户端或者服务器的配置。 FileSystem类:该类的对象是一个文件系统对象,可以用该对象的一些方法来对文件进行操作。FileSystem fs = FileSystem.get(conf);通过FileSystem的静态方法get获得该对象。 FSDataInputStream和FSDataOutputStream:这两个类是HDFS中的输入输出流。分别通过FileSystem的open方法和create方法获得。 具体如何对文件操作清下下面例子: 1 package com.hdfs; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.io.InputStream; 6 7 import org.ap...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作