您的位置:首页 > 运维架构

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

2016-04-12 15:22 393 查看
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

在<configuration></configuration>直接添加如下信息

<property>

<name>hadoop.tmp.dir</name>

<value>/hadoop/temp</value>

</property>

<property>

<name>fs.default.name</name>

<value>hdfs://gdy192:8020</value>

</property>



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

在<configuration>和</configuration>之间添加如下信息。

<property>

<name>mapred.job.tracker</name>

<value>gdy192:8021</value>

</property>



wq保存退出

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

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

编辑文件:hdfs-site.xml

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

在<configuration>和</configuration>之间添加如下信息。

<property>

<name>dfs.replication</name>

<value>1</value>

<description>The actualnumber of replications can be specified when the file iscreated.</description>

</property>

<property>

<name>dfs.data.dir</name>

<value>/hadoop/data</value>

<final>ture</final>

<description>Thedirectories where the datanode stores blocks.</description>

</property>

<property>

<name>dfs.name.dir</name>

<value>/hadoop/name</value>

<final>ture</final>

<description>Thedirectories where the namenode stores its persistentmatadata.</description>

</property>

<property>

<name>fs.checkpoint.dir</name>

<value>/hadoop/namesecondary</value>

<final>ture</final>

<description>Thedirectories where the secondarynamenode stores checkpoints.</description>

</property>



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。将在之后陆续公布。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: