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

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

wq保存退出

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

拷贝文件到gdy194上

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

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_02

输入gdy194的root密码

 

hadoop的伪分布式模式配置与安装_部署_03

拷贝成功。

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

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

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_04

可以看到拷贝成功。

同样再次拷贝一份到gdy195

在gdy192上输入:

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

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

这里就不验证了。

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

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

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

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

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

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

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

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

在gdy192上

[root@gdy192 /]#useradd hduser

[root@gdy192 /]#passwd hduser

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

在gdy194上

[root@gdy194 /]#useradd hduser

[root@gdy194 /]#passwd hduser

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

在gdy195上

[root@gdy195 /]#useradd hduser

[root@gdy195 /]#passwd hduser

hadoop的伪分布式模式配置与安装_部署_11

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

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

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

将这两个文件解压到之前创建的目录/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/

hadoop的伪分布式模式配置与安装_部署_13

使用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/

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_14

配置java和hadoop的环境变量

配置java的环境变量

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

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

添加如下信息:

JAVA_HOME=/usr/gd/java

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOMEPATH

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

wq保存退出

配置hadoop的环境变量

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

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_17

添加如下信息:

HADOOP_HOME=/usr/gd/hadoop

PATH=$HADOOP_HOME/bin:$PATH

export HADOOP_HOMEPATH

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

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/

hadoop的伪分布式模式配置与安装_部署_19

拷贝到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/

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

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

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

hadoop的伪分布式模式配置与安装_部署_21

在gdy192上切换到hduser用户下面

[root@gdy192 /]#su – hduser

hadoop的伪分布式模式配置与安装_部署_22

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

命令:

先制作秘钥文件

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

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

回车

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_24

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

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

hadoop的伪分布式模式配置与安装_部署_25

输入yes

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_26

输入gdy194上的hduser的用户密码

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

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

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

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

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

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

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

hadoop的伪分布式模式配置与安装_部署_29

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

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

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

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

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

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

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

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

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

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_32

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

[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用户的家目录

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

制作秘钥文件

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

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

拷贝秘钥文件到gdy194,gdy195

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

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

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

hadoop的伪分布式模式配置与安装_部署_36

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

先检查三台电脑的时间:

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

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

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

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

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

再次查看时间

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

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

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

用gdy192切换到hduser用户下

[root@gdy192 ~]#su - hduser

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

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

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

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

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

进程hadoop的文件目录里面

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

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

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

编辑masters文件

[hduser@gdy192conf]$ vim masters

将原来的localhost修改为gdy194

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

wq保存退出

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

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

 

编辑slaves文件

[hduser@gdy192conf]$ vim slaves

将原来的localhost修改为gdy195

hadoop的伪分布式模式配置与安装_部署_44

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>

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_45

wq保存退出

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

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

切换到root用户。

[hduser@gdy192conf]$ su – root

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

创建/hadoop目录

[root@gdy192 ~]#mkdir /hadoop/

hadoop的伪分布式模式配置与安装_部署_47

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

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

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_48

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

在gdy194上

[root@gdy194 /]#mkdir /hadoop

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

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

在gdy195上

[root@gdy195 /]#mkdir hadoop

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

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

 

使用gdy192

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

[root@gdy192 ~]#exit

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

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

编辑文件 mapred-site.xml

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

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

  <property>

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

      <value>gdy192:8021</value>

  </property>

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

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>

hadoop的伪分布式模式配置与安装_部署_53

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/

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


hadoop的伪分布式模式配置与安装_部署_55

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

在gdy194上

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

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

hadoop的伪分布式模式配置与安装_部署_56

在gdy195上

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

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

hadoop的伪分布式模式配置与安装_部署_57

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

启动hadoop伪分布式模式

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

 

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

切换到hduser用户

hadoop的伪分布式模式配置与安装_部署_59

格式化hadoop的文件系统HDFS

[hduser@gdy192 ~]$hadoop namenode -format

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_60

启动hadoop

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

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

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

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

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

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

看到已经成功启动

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

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

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

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

使用

[hduser@gdy192 ~]$netstat –nlpt

可以查看hadoop的端口

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

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

50070为hadoop的Namenode节点信息。

查看hadoop的MapReduce作业信息

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

如下图:

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

查看hadoop的NameNode节点信息

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

如下图:

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

 

由于SecondaryNameNode部署在gdy194上。

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

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

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

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

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

来访问SecondaryNameNode的对外web端口。

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_68

 

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

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

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

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_69

50060为hadoop的TaskTracker的节点信息

50075为hadoop的DateNoe的节点信息

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

​http://192.168.61.195:50075/​

​http://192.168.61.195:50060/tasktracker.jsp​

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

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_71

 

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

 

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

使用机器gdy192

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

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

查看已经建立好的文件夹

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

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

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

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

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

查看已经上传的文件

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

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

对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​​来查看作业进行的情况。

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

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

hadoop的伪分布式模式配置与安装_hadoop+hbase+zookeep_77

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

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

hadoop的伪分布式模式配置与安装_部署_78

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

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

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

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

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

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