《Hadoop》之"踽踽独行"(七)Hadoop的伪分布式集群搭建

上一章我给大家介绍了Hadoop的单节点集群本地模式的搭建,在这一章中,我们来了解一下Hadoop伪分布式集群的搭建与用途。

一、Hadoop伪分布式集群(pseudo distributed cluster)

1、简介

hadoop的pseudo distributed cluster(伪分布式集群),就是在一台主机上模拟多个主机。即hadoop的守护程序在本地计算机(这个指的是Linux虚拟机)上运行,模拟集群环境,并且是相互独立的Java进程。

在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由ResourceManager服务来管理的独立进程。

比local mode 多了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。

2、用途

类似于完全分布式模式下的集群。因此,这种模式常用来开发测试Hadoop程序的执行是否正确。

二、搭建伪分布式

安装前说明:

1、普通用户:hyxy
2、创建~/apps目录,用于管理软件包
3、将jdk-7u80-linux-x64.tar.gz   和  hadoop-2.7.3.tar.gz  上传到/home/hyxy/apps/目录下

第一步、安装JDK,配置环境变量

使用tar指令将jdk的软件包解压到apps目录下,后删除软件包,然后创建一个软链接jdk.soft

[hyxy@master apps ]$  tar -zxv -f  jdk-7u80-linux-x64.tar.gz。
[hyxy@master apps]$ rm jdk-7u80-linux-x64.tar.gz    #解压后删除软件包,节省空间
[hyxy@master apps]$ ln -s jdk1.7.0_80/ jdk.soft    #软链接叫jdk.soft

我们在~/.bash_profile配置文件内,配置jdk的环境变量,然后重新加载配置文件,并检测java和javac两个命令

[hyxy@master apps]$ vim ~/.bash_profile
............ 
PATH=$PATH:$HOME/bin                                  #可要可不要
 
# jdk environment
JAVA_HOME=/home/hyxy/apps/jdk.soft                    #配置环境变量JAVA_HOME
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH          #千万别忘记拼接$PATH
export PATH JAVA_HOME

[hyxy@master apps]$ source ~/.bash_profile           #重新加载配置文件
[hyxy@master apps]$ java -version                    #检测jdk版本
java version "1.7.0_80"
............
[hyxy@master apps]$ javac                            #测试javac命令

第二步、解压hadoop,配置环境变量

使用tar指令解压hadoop软件包,然后删除软件包,再创建软链接hadoop.soft

[hyxy@master apps]$ tar -zxv -f hadoop-2.7.3.tar.gz       #1.解压软件包
[hyxy@master apps]$ rm hadoop-2.7.3.tar.gz                #2.删除软件包
[hyxy@master apps]$ ln -s hadoop-2.7.3/ hadoop.soft       #3.创建软链接hadoop.soft
[hyxy@master apps]$ ll
drwxr-xr-x. 9 hyxy hyxy 4096 8月  18 2016 hadoop-2.7.3
lrwxrwxrwx. 1 hyxy hyxy   13 1月   8 11:04 hadoop.soft -> hadoop-2.7.3/
drwxr-xr-x. 8 hyxy hyxy 4096 4月  11 2015 jdk1.7.0_80
lrwxrwxrwx. 1 hyxy hyxy   12 1月   8 10:45 jdk.soft -> jdk1.7.0_80/

在~/.bash_profile配置文件内,配置hadoop的环境变量,然后重新加载配置文件,并检测hadoop命令

[hyxy@master apps]$ vim ~/.bash_profile
...............                                 #前面的内容省略了
...............
# hadoop environment                            #追加hadoop环境变量
HADOOP_HOME=/home/hyxy/apps/hadoop.soft         #配置HADOOP_HOME
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH   #配置path,千万别忘记拼接$PATH
export PATH HADOOP_HOME

[hyxy@master apps]$ source ~/.bash_profile         #重新加载配置文件
[hyxy@master apps]$ hadoop version                 #测试hadoop命令
Hadoop 2.7.3

第三步、修改hadoop伪分布式集群的配置信息

首先我们进入hadoop的etc/hadoop目录下:

[hyxy@master apps]$ cd hadoop.soft/etc/hadoop/      #检查你自己的路径,不要盲目的抄写
[hyxy@master hadoop]$ ls                            #查看一下目录下的配置文件
capacity-scheduler.xml  hadoop-env.cmd              hadoop-policy.xml        httpfs-signature.secret  kms-log4j.properties  mapred-env.sh               ssl-client.xml.example  yarn-site.xml
configuration.xsl       hadoop-env.sh               hdfs-site.xml            httpfs-site.xml          kms-site.xml          mapred-queues.xml.template  ssl-server.xml.example
container-executor.cfg  hadoop-metrics2.properties  httpfs-env.sh            kms-acls.xml             log4j.properties      mapred-site.xml.template    yarn-env.cmd
core-site.xml           hadoop-metrics.properties   httpfs-log4j.properties  kms-env.sh               mapred-env.cmd        slaves                      yarn-env.sh

修改core-site.xml

[hyxy@master hadoop]$ vim core-site.xml      
<configuration>
        <property>
                <name>fs.defaultFS</name>                #属性: 默认的分布式文件系统              
                <value>hdfs://localhost:9000</value>     #配置本地地址,port:9000
        </property>
</configuration>

修改hdfs-site.xml

[hyxy@master hadoop]$ vim hdfs-site.xml

<configuration>
        <property>
                <name>dfs.replication</name>       #属性:副本数量
                <value>1</value>                   #给个值 1
        </property>
</configuration>

修改hadoop-env.sh,设置JAVA_HOME=/home/hyxy/apps/jdk.soft

[hyxy@master hadoop]$ vim hadoop-env.sh
...............................          #省略了
# The java implementation to use.
export JAVA_HOME=/home/hyxy/apps/jdk.soft      #修改成jdk的安装路径

第四步:配置SSH无密登陆

首先查看一下是否安装了ssh软件:rpm -qa | grep ssh。如果没安装,就先安装此软件。安装了,就直接进行下面操作。

首先,验证一下ssh localhost,是否需要密码:

[hyxy@master hadoop]$ ssh localhost
............
hyxy@localhost's password:              #是需要密码的

然后配置无密登录。(再次强调,使用普通用户,不要使用root用户)

1、生成私钥和公钥一对密钥。输入命令: ssh-keygen -t rsa 。然后一路回车即可。

[hyxy@master ~]$ cd
[hyxy@master ~]$ ssh-keygen -t rsa              #运行这个指令串 生成密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hyxy/.ssh/id_rsa):       #回车
Enter passphrase (empty for no passphrase):                         #回车
Enter same passphrase again:                                        #回车
Your identification has been saved in /home/hyxy/.ssh/id_rsa.       #私钥文件
Your public key has been saved in /home/hyxy/.ssh/id_rsa.pub.       #公钥文件
The key fingerprint is:
85:b7:6b:04:fe:cd:da:85:47:72:5e:ff:1f:6b:92:74 hyxy@master
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|         .       |
|        o o      |
|       . + .     |
|        S o . o .|
|         o + B E.|
|          + = *..|
|         . o = .+|
|          . . o.+|
+-----------------+
[hyxy@master ~]$

2、进入.ssh目录,将公钥文件更名为authorized_keys文件,即可实现ssh连接自己不再需要密码。确保authorized_keys的权限为600。

[hyxy@master ~]$ cd ~/.ssh                     #进入.ssh目录
[hyxy@master .ssh]$ ll
-rw-------. 1 hyxy hyxy 1675 1月   8 14:54 id_rsa
-rw-r--r--. 1 hyxy hyxy  393 1月   8 14:54 id_rsa.pub
[hyxy@master .ssh]$ mv id_rsa.pub authorized_keys   #更名操作
[hyxy@master .ssh]$ chmod 600 authorized_keys       #更改权限

3、结果验证:

[hyxy@master ~]$ ssh localhost            #验证localhost
Last login: Tue Jan  8 14:57:02 2019 from localhost

[hyxy@master ~]$ ssh master              #验证主机名登录,前提得在/etc/hosts绑定主机名和ip
Last login: Tue Jan  8 14:57:16 2019 from localhost

第五步:格式化分布式文件系统

使用hdfs namenode -format 来格式化分布式文件系统

[hyxy@master ~]$ hdfs namenode -format

第六步:启动HDFS

开启namenode线程和datanode线程等

[hyxy@master ~]$ start-dfs.sh

第七步:查看线程

正常应该至少有四个线程,就对了

[hyxy@master ~]$ jps
30591 Jps
30194 NameNode
30481 SecondaryNameNode
30288 DataNode

第八步:使用浏览器进行访问hadoop伪分布集群

使用linux虚拟机上的火狐浏览器,访问地址:http://localhost:50070

能看到上述信息,1个Live Nodes,就保没错了。伪分布搭建完毕。如果还想配置YARN环境的,可以参考官网:https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/SingleCluster.html,这个链接的最下面就是YARN no a Single node的配置了。

三、程序测试

伪分布式集群搭建好了,我们来运行一个mapreduce程序试试。

第一步:在分布式文件系统上创建多级目录/hyxy/input

[hyxy@master ~]$ hdfs dfs -mkdir -p /hyxy/input

第二步:在本地创建一个文件file,内容如下:

[hyxy@master ~]$ echo hello world hello kitty you are good >> file

第三步:将file 上传到分布式文件系统/hyxy/input目录下,然后查看一下

[hyxy@master ~]$ hdfs dfs -put file /hyxy/input
[hyxy@master ~]$ hdfs dfs -ls  /hyxy/input/
Found 1 items
-rw-r--r--   1 hyxy supergroup         37 2019-01-08 15:46 /hyxy/input/file

第四步:在分布式文件系统上创建目录output。用于存储输出数据。

[hyxy@master ~]$ hdfs dfs -mkdir /hyxy/output

第五步:使用hadoop自带的单词统计mapreduce程序,统计file文件的单词

[hyxy@master ~]$ hadoop jar ./apps/hadoop.soft/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /hyxy/input /hyxy/output/count

第六步:查看统计结果

[hyxy@master ~]$ hdfs dfs -cat /hyxy/output/count/*
are     1
good    1
hello   2
kitty   1
world   1
you     1

可以在浏览器上查看分布式文件系统

ok。到此为止,伪分布式搭建和案例测试,都完美收官,吼吼吼

-------------------------------如有疑问,敬请留言吧--------------------------------------------------------------------
 

猜你喜欢

转载自blog.csdn.net/Michael__One/article/details/86070063