首页 > 系统 > Linux >

[] hadoop的伪分布式模式配置与安装

2016-04-18

hadoop的伪分布式模式配置与安装 上次对hadoop单机模式中已经介绍了hadoop的基本安装,本次将讲解hadoop的伪分布式模式进行对hadoop的基本模拟部署。 安装软件: 系统:Linux 2 6 32-3

hadoop的伪分布式模式配置与安装

上次对hadoop单机模式中已经介绍了hadoop的基本安装,本次将讲解hadoop的伪分布式模式进行对hadoop的基本模拟部署。

安装软件:

系统Linux 2.6.32-358.el6.x86_64

JDK:jdk-7u7-linux-i586.tar.gz

Hadoop版本:hadoop-0.20.2-cdh3u4.tar.gz

硬件环境:

三台主机:分别为

gdy192 192.168.61.192

gdy194 192.168.61.194

gdy195 192.168.61.195

本次部署模型为:

gdy192上部署:NameNode和JobTracker

gdy194上部署:SecondaryNameNode

gdy195上部署:DateNode TaskTracker

首先配置三台主机的hosts文件,以便之后不用ip而直接用别名进行相互访问

首先在gdy192上配置一份信息。

[root@gdy192 /]#vim /etc/hosts

\

wq保存退出

将已经配置好的文件分别拷贝一份到其他两台主机上

拷贝文件到gdy194上

[root@gdy192 ~]#scp /etc/hosts root@gdy194:/etc/

\

输入gdy194的root密码

\

拷贝成功。

去gdy194上查看/etc/hosts验证是否是叫我们刚才修改的文件

[root@gdy194 /]#cat /etc/hosts

\

可以看到拷贝成功。

同样再次拷贝一份到gdy195

在gdy192上输入:

[root@gdy192 ~]#scp /etc/hosts root@gdy195:/etc/

\

这里就不验证了。

在gdy192上创建jDK和Hadoop的安装目录gd

[root@gdy192 /]#mkdir /usr/gd/ -pv

\

在gdy194上创建JDK和Hadoop的安装目录gd

\

在gdy195上创建JDK和Hadoop的安装目录gd

\

分别在gdy192,gdy194,gdy195上创建hduser用户并设置密码

在gdy192上

[root@gdy192 /]#useradd hduser

[root@gdy192 /]#passwd hduser

\

在gdy194上

[root@gdy194 /]#useradd hduser

[root@gdy194 /]#passwd hduser

\

在gdy195上

[root@gdy195 /]#useradd hduser

[root@gdy195 /]#passwd hduser

\

将之前准备好的软件包拷贝到gdy192上,

如下图是我已经拷贝好的文件

\

将这两个文件解压到之前创建的目录/usr/gd/下面

[root@gdy192ftpftp]# tar -xf jdk-7u7-linux-i586.tar.gz -C /usr/gd/

[root@gdy192ftpftp]# tar -xf hadoop-0.20.2-cdh3u4.tar.gz -C /usr/gd/

\

使用ls /usr/gd/可以查看解压后的文件

为jdk和hadoop创建软链接在/usr/gd目录下面

[root@gdy192ftpftp]# ln -s /usr/gd/jdk1.7.0_07/ /usr/gd/java

[root@gdy192ftpftp]# ln -s /usr/gd/hadoop-0.20.2-cdh3u4/ /usr/gd/hadoop

[root@gdy192ftpftp]# ll /usr/gd/

\

配置java和hadoop的环境变量

配置java的环境变量

[root@gdy192 /]#vim /etc/profile.d/java.sh

\

添加如下信息:

JAVA_HOME=/usr/gd/java

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOMEPATH

\

wq保存退出

配置hadoop的环境变量

[root@gdy192 /]#vim /etc/profile.d/hadoop.sh

\

添加如下信息:

HADOOP_HOME=/usr/gd/hadoop

PATH=$HADOOP_HOME/bin:$PATH

export HADOOP_HOMEPATH

\

wq保存退出

使用scp分别将这两个文件拷贝到gdy194和gdy195机器上的/etc/profile.d/目录下面。

拷贝到gdy194上

[root@gdy192 /]#scp /etc/profile.d/java.sh root@gdy194:/etc/profile.d/

[root@gdy192 /]#scp /etc/profile.d/hadoop.sh root@gdy194:/etc/profile.d/

\

拷贝到gdy195上

[root@gdy192 /]#scp /etc/profile.d/java.sh root@gdy195:/etc/profile.d/

[root@gdy192 /]#scp /etc/profile.d/hadoop.sh root@gdy195:/etc/profile.d/

\

修改/usr/gd/目录下的所有文件的属主和属组为hduser

[root@gdy192 /]#chown -R hduser.hduser /usr/gd

\

在gdy192上切换到hduser用户下面

[root@gdy192 /]#su – hduser

\

使用ssh-keygen和ssh-copy-id为gdy192能无密码直接访问gdy194和gdy195下的hduser用户

命令:

先制作秘钥文件

[hduser@gdy192 ~]$ssh-keygen -t rsa -P ''

\

回车

\

使用ssh-copy-id拷贝生成的公秘到gdy194机器上的hduser下,使gdy192能无密码访问gdy194

[hduser@gdy192 ~]$ssh-copy-id -i .ssh/id_rsa.pub hduser@gdy194

\

输入yes

\

输入gdy194上的hduser的用户密码

\

使用ssh-copy-id拷贝生成的公秘到gdy195机器上的hduser下,使gdy192能无密码访问gdy195

[hduser@gdy192 ~]$ssh-copy-id -i .ssh/id_rsa.pub hduser@gdy195

\

使用ssh-copy-id拷贝生成的公秘到gdy192机器上的hduser下,使gdy192能无密码访问gdy192

注意:即使是hadoop中使用的是ip进行调度访问,即使是访问自己的机器,如果不配置无密码访问,访问时,一样需要输入密码。这里和之前配置hadoop单机模式时一样。需要配置无密码访问。

[hduser@gdy192 ~]$ssh-copy-id -i .ssh/id_rsa.pub hduser@gdy192

\

验证gdy192是否已经不用输密码自己访问gdy194

[hduser@gdy192 ~]$ssh gdy194 'date'

能不需要输入密码就显示gdy194上的日期,则证明配置成功。

\

验证gdy192是否已经不用输密码自己访问gdy195

[hduser@gdy192 ~]$ssh gdy195 'date'

\

验证gdy192是否已经不用输入访问自己gdy192

[hduser@gdy192 ~]$ssh gdy192 'date'

\

查看三台机器上的系统世界是否一样

[hduser@gdy192 ~]$ssh gdy194 'date';ssh gdy195 'date';ssh gdy192 'date'

同步三个节点上的时间:

注意:这里由于hadoop没有权限修改时间,需要配置root能无密码访问gdy194和gdy195,gdy192。然后在统一设定时间。或者你自己设计其他方法保证时间同步。不过,时间同步在正在部署的环境上是必须要有的。如果这步你不配置,对于本次的hadoop伪分布式模式也没有多大影响。不过建议还是配置下。

配置代码如下。

[hduser@gdy192 ~]$exit

先退出hduser用户

[root@gdy192 /]#cd ~

进入root用户的家目录

\

制作秘钥文件

[root@gdy192 ~]#ssh-keygen -t rsa -P ''

\

拷贝秘钥文件到gdy194,gdy195

[root@gdy192 ~]# ssh-copy-id -i.ssh/id_rsa.pub root@gdy194

\

[root@gdy192 ~]#ssh-copy-id -i .ssh/id_rsa.pub root@gdy195

\

由于root自己访问自己,每次都需要确认一次yes,所以用root用户配置无密码访问自己没有用。再说这里的配置只是为了完成三台电脑的时间同步。

先检查三台电脑的时间:

[root@gdy192 ~]#ssh gdy194 'date';ssh gdy195 'date';date

\

将三台电脑的时间设为同一时间:

[root@gdy192 ~]#ssh gdy194 'date 0929235415';ssh gdy195 'date 0929235415';date 0929235415

\

再次查看时间

[root@gdy192 ~]#ssh gdy194 'date';ssh gdy195 'date';date

\

可以看到这里的时间就已经同步了。

用gdy192切换到hduser用户下

[root@gdy192 ~]#su - hduser

\

再来查看三台电脑的时间:

[hduser@gdy192 ~]$ssh gdy194 'date';ssh gdy195 'date';ssh gdy192 date

\

接下来就要开始配置hadoop的配置文件了

进程hadoop的文件目录里面

[hduser@gdy192hadoop]$ cd /usr/gd/hadoop/conf/

\

由于在hadoop单机模式配置里面已经对重要文件做个解释。这里不再重复解释,详情请见日志《hadoop的单机模式配置与安装》

编辑masters文件

[hduser@gdy192conf]$ vim masters

将原来的localhost修改为gdy194

\

wq保存退出

注意:在上面就已经说明gdy194是用来做SecondaryNameNode的名称节点的。

而masters就是配置第二名称节点的。

编辑slaves文件

[hduser@gdy192conf]$ vim slaves

将原来的localhost修改为gdy195

\

wq保存退出

同样这里定义的是数据节点。

编辑文件core-site.xml

[hduser@gdy192conf]$ vim core-site.xml

直接添加如下信息

hadoop.tmp.dir

/hadoop/temp

fs.default.name

hdfs://gdy192:8020

\

wq保存退出

注意:这里的fs.default.name定义的是主节点。由于每个节点上配置文件都一样,所以这里要使用ip或者别名来定义主节点的位置。

由于这里定义了一个hadoop的缓存文件目录,所以我们需要在三台电脑上分别创建这个缓存文件目录。

切换到root用户。

[hduser@gdy192conf]$ su – root

\

创建/hadoop目录

[root@gdy192 ~]#mkdir /hadoop/

\

修改hadoop目录的属主和属主为hduser,让hduser能在这个目录下有写权限。

[root@gdy192 ~]#chown -R hduser.hduser /hadoop

\

同样在gdy194和gdy195上创建一个这样的目录,并赋予hadoop权限。

在gdy194上

[root@gdy194 /]#mkdir /hadoop

[root@gdy194 /]#chown -R hduser.hduser /hadoop

\

在gdy195上

[root@gdy195 /]#mkdir hadoop

[root@gdy195 /]#chown -R hduser.hduser /hadoop

\

使用gdy192

退出当前用户,返回之前的hduser用户

[root@gdy192 ~]#exit

\

注意:这里由于刚刚是直接登录,所以现在能退出返回到之前的hduser用户和hduser操作的目录下面。

编辑文件 mapred-site.xml

[root@gdy192conf]# vim mapred-site.xml

之间添加如下信息。

mapred.job.tracker

gdy192:8021

\

wq保存退出

同样,由于这里定义的是JobTracker,而我们上部署就已经说明gdy192上存放jobTracker

所以这里在单机模式下的localhost就要改成ip或者是ip别名。

编辑文件:hdfs-site.xml

[root@gdy192conf]# vim hdfs-site.xml

之间添加如下信息。

dfs.replication

1

The actualnumber of replications can be specified when the file iscreated.

dfs.data.dir

/hadoop/data

ture

Thedirectories where the datanode stores blocks.

dfs.name.dir

/hadoop/name

ture

Thedirectories where the namenode stores its persistentmatadata.

fs.checkpoint.dir

/hadoop/namesecondary

ture

Thedirectories where the secondarynamenode stores checkpoints.

\

wq保存退出

注意:这里是跟想象的定义了hadoop中其他目录的位置,如果这里不定义,将会默认使用core-site.xml文件里面定义的默认缓存目录。

到这里hadoop的配置文件就已经配置完成了。

接下来分别在gdy194上和gdy195上解压jdk-7u7-linux-i586.tar.gz和hadoop-0.20.2-cdh3u4.tar.gz软件包到/etc/gd/文件夹下面。并分别创建连接文件。(向上面之前操作一样)

这由于重复操作。不再做解释。

接下来拷贝刚刚在gdy192上已经配置好的文件到gdy194和gdy195的对应位置。

方法如下:

在gdy192上使用root用户

拷贝文件到gdy194和gdy195上

[hduser@gdy192hadoop]$ scp /usr/gd/hadoop/conf/* gdy194:/usr/gd/hadoop/conf/

[hduser@gdy192 hadoop]$ scp /usr/gd/hadoop/conf/*gdy195:/usr/gd/hadoop/conf/

\

\

在gdy194和gdy195上分别使用root用户给予/usr/gd/hadoop文件夹赋予hduser用户权限。

在gdy194上

[root@gdy194 /]#chown hduser.hduser /usr/gd/ -R

[root@gdy194 /]#ll /usr/gd/

\

在gdy195上

[root@gdy195 /]#chown hduser.hduser /usr/gd/ -R

[root@gdy195 /]#ll /usr/gd/

\

到这里hadoop的伪分布式模式已经全部配置完成。

启动hadoop伪分布式模式

使用gdy192主机。重新登录root用户

\

切换到hduser用户

\

格式化hadoop的文件系统HDFS

[hduser@gdy192 ~]$hadoop namenode -format

\

启动hadoop

[hduser@gdy192 ~]$start-all.sh

\

这里已经看到gdy192上成功启动了NameNode和JobTracker两个节点

查看gdy194上是否已经成功启动SecondaryNameNode

[hduser@gdy192 ~]$ssh gdy194 'jps'

\

看到已经成功启动

查看gdy195上是否已经成功启动DataNode和TaskTracker

[hduser@gdy192 ~]$ssh gdy195 'jps'

\

到这里已经看到都成功启动

使用

[hduser@gdy192 ~]$netstat –nlpt

可以查看hadoop的端口

\

其中50030端口为hadoop的对外web网址端口。可以查看hadoop的MapReduce作业的相关信息

50070为hadoop的Namenode节点信息。

查看hadoop的MapReduce作业信息

可以在浏览器上访问:http://192.168.61.192:50030/jobtracker.jsp

如下图:

\

查看hadoop的NameNode节点信息

可以在浏览器上访问:http://192.168.61.192:50070/dfshealth.jsp

如下图:

\

由于SecondaryNameNode部署在gdy194上。

查看gdy194上的Hadoop的进程端口信息。

[hduser@gdy192 ~]$ssh gdy194 'netstat -nlpt'

\

其中50090端口为hadoop的SecondaryNameNode的web对外端口

可以使用:http://192.168.61.194:50090/status.jsp

来访问SecondaryNameNode的对外web端口。

\

同样,由于DataNode和TaskTracker部署在gdy195上。

在gdy192上查看gdy195上的端口信息

[hduser@gdy192 ~]$ssh gdy195 'netstat -nlpt'

\

50060为hadoop的TaskTracker的节点信息

50075为hadoop的DateNoe的节点信息

分别通过以下地址可访问:

http://192.168.61.195:50075/

http://192.168.61.195:50060/tasktracker.jsp

\

\

注意:在实际部署中以上web的访问端口前的ip地址为你实际部署的ip地址,这里我是按照我自己部署的ip地址列举出来的。

在hadoop上做一次hadoop的单词统计

使用机器gdy192

在hadoop的DNSF文件系统上新建一个text文件夹

\

查看已经建立好的文件夹

[hduser@gdy192 ~]$hadoop fs -ls /

\

上传一个系统文件到test文件夹下

[hduser@gdy192 ~]$hadoop fs -put /etc/hosts /test

\

查看已经上传的文件

[hduser@gdy192 ~]$hadoop fs -ls /test

\

对hadoop目录中的test所有文件做单词统计,统计结果输出在word文件夹下

[hduser@gdy192 ~]$hadoop jar /usr/gd/hadoop/hadoop-examples-0.20.2-cdh3u4.jar wordcount /test /word

在这个过程中可以通过

http://192.168.61.192:50030/jobtracker.jsp来查看作业进行的情况。

\

下图就是刚刚执行的作业完成后的显示

\

查看单词统计结果输出目录

[hduser@gdy192 ~]$hadoop fs -ls /word

\

查看结果输出文件part-r-00000可以看到刚才对test目录下的文件做单词统计的统计结果

[hduser@gdy192 ~]$hadoop fs -cat /word/part-r-00000

\

这就是刚才统计的的统计结果。

到本文档位置hadoop的单机模式和hadoop的伪分布模式安装和部署就已经完成了。

其实hadoop的单独安装后一般都会再安装hbase来原理hadoop。这样好方便存储数据,和管理。对于在hadoop的单机模式上怎么部署hbase和在hadoop的伪分布式模式下如何部署hbase。将在之后陆续公布。

相关文章
最新文章
热点推荐