在上一章我给大家介绍了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。到此为止,伪分布式搭建和案例测试,都完美收官,吼吼吼
-------------------------------如有疑问,敬请留言吧--------------------------------------------------------------------