伪分布式模式也是在一台单机上运行,集群中的结点由一个NameNode和若干个DataNode组,另有一个SecondaryNameNode作为NameNode的备份。一个机器上,既当namenode,又当datanode,或者说既是jobtracker,又是tasktracker。没有所谓的在多台机器上进行真正的分布式计算,故称为"伪分布式"。开启多个进程模拟完全分布式,但是并没有真正提高程序执行的效率。hadoop伪分布式集群以后只是一个空的hadoop,只有YARN,MapReduce,HDFS,而这些实际上我们一般不会直接使用,而是需要另外部署Hadoop的其他组件来辅助使用。下面开始搭建hadoop伪分布式。
一、hadoop安装部署
1、准备工作
本文是基于CentOS 7 , jdk-8u181 和Hadoop2.6.0环境搭建,准备好CentOS7 64位的镜像,然后在VMware上安装虚拟机
1)修改静态IP
首先找到/etc/sysconfig/network-scripts/下的ifcfg-ens33配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
把 BOOTPROTO = “dhcp” 改成 BOOTPROTO = “static” 表示静态获取,然后把 UUID 注释掉,把 ONBOOT 改为 yes,表示开机自动静态获取,然后在最后追加比如下面的配置:
IPADDR=192.168.134.151 #自己的ip地址
NETMASK=255.255.255.0
GATEWAY=192.168.134.2
DNS1=8.8.8.8
IPADDR就是静态IP,NETMASK是子网掩码,GATEWAY就是网关或者路由地址
重启网络服务
centos6的网卡重启方法:service network restart
centos7的网卡重启方法:systemctl restart network
2)关闭防火墙
查看防火墙状态: systemctl status firewalld.service
执行关闭命令: systemctl stop firewalld.service
执行开机禁用防火墙自启命令 : systemctl disable firewalld.service
2、解压并配置环境变量
1)解压
在opt目录下创建software文件夹,将 jdk-8u181-linux-x64.tar.gz 与 hadoop-2.6.0-cdh5.14.2.tar.gz 保存到software目录下,将jdk与hadoop减压到上级目录,并改名为jdk,hadoop
2)配置环境变量
vi /etc/profile
添加以下内容:
export JAVA_HOME=/opt/jdk
export HADOOP_HOME=/opt/hadoop
export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH
刷新环境变量:source /etc/profile
3、修改主机名与ip映射
1)修改主机名(永久更改)
方法一:
可以通过命令 hostnamectl set-hostname “主机名”
来永久修改主机名
[root@hadoop ~]# hostnamectl set-hostname hadoop
方法二:
使用 vi 编辑器打开 /etc/ hostname 文件
vi /etc/hostname
删除文件中原有内容,添加主机名:hadoop,保存退出
2)修改IP映射
使用 vi 编辑器打开 /etc/hosts 文件
vi /etc/hosts
在文件尾部添加内容,格式:IP地址 主机名(中间用空格分隔),保存退出,,例如:
192.168.242.130 hadoop
设置完成后,重启网路服务: systemctl restart network
使用 ping 命令 ping 一下主机名,如果可以ping 通,表示设置成功。
3)配置免密登录
Hadoop 中的NameNode和DataNode是通过SSH (Secure Shell) 进行通信的,所以
需要先完成 SSH免密码登录。具体操作步骤如下:
[hadoop@hadoop~]$ ssh-keygen -t rsa
[hadoop@hadoop ~]$ ssh-copy-id localhost
执行完上面两条命令后,就可以实现免密码登录到本机。验证方式如下:
[hadoop@hadoop ~]S ssh hadoop
4、配置hadoop文件
1)hadoop-env.sh
export JAVA_HOME=/opt/jdk
2)core-site.xml
<property>
<!-- 配置NameNode的主机名和端口号 -->
<name>fs.defaultFS</name>
<value>hdfs://hadoop:8020</value>
</property>
3)hdfs-site.xml(确保下面路径中的文件夹是存在的,没有的话先创建)
<property>
<!-- 设置HDFS元数据文件存放路径 -->
<name>dfs.namenode.name.dir</name>
<value>/opt/hd_space/hdfs/name</value>
</property>
<property>
<!-- 设置HDFS数据文件存放路径 -->
<name>dfs.datanode.data.dir</name>
<value>/opt/hd_space/hdfs/data</value>
</property>
<property>
<!-- 设置HDFS数据文件副本数 -->
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<!-- 设置其他用户执行操作时会提醒没有权限 -->
<name>dfs.permissions</name>
<value>false</value>
</property>
4)map-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5)yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
6)slaves
hadoop
5、格式化 HDFS
Hadoop配置完成后,第一次使用Hadoop平台需要先格式化文件系统。
进入到Hadoop安装目录下的bin目录里,执行:./hdfs namenode -format
[hadoop@hadoop ~]# cd /opt/hadoop/bin
[hadoop@hadoop ~]# ./hdfs namenode -format
6、启动并验证
进入到Hadoop安装目录下的sbin目录里,执行:start-all.sh
[hadoop@hadoop ~]# cd /opt/Hadoop/sbin
[hadoop@hadoop ~]# start-all.sh
Hadoop启动成功后,通常使用以下几种方式进行验证。
(1) 通过 jps 命令查看启动的进程,命令执行后,如果可以看到 NameNode
、DataNode
、SecondaryNameNode
、ResourceManager
、NodeManager
进程,证明 Hadoop平台已经启动成功。
(2) 通过webui的方式验证
验证 HDFS 启动成功的网址为:http://hadoop:50070 验证 YARN 启动成功的网址为:http://hadoop:8088
如果两个网址都能正确打开,证明Hadoop平台已经启动成功。
* 注意
start-all.sh
是启动Hadoop所有进程,
单独启动进程的时候要先启动HDFS(start-dfs.sh),然后再启动YARN(start-yarn.sh)
二、zookeeper安装
1、解压安装
(1)解压缩包并重命名。
tar -zxvf /opt/software/zookeeper-3.4.5-cdh5.14.2.tar.gz -C /opt/
mv /opt/zookeeper-3.4.5-cdh5.14.2/ opt/zookeeper
(2)配置环境变量
vi /etc/profile,添加如下:
export ZK HOME=/opt/zookeeper
export PATH=SZK_HOME/bin:SPATH
2、配置 ZooKeeper
ZooKeeper解压安装并配置环境变量后,前置工作就完成了,接下来对ZooKeeper的配置文件进行配置。
- 配置zoo.cfg 文件
ZooKeeper主配置文件zoo.cfg在./ZK_HOME/conf/目录下,默认是没有该文件的,但是提供了zoosample.cfg模板文件。需要执行下面的命令来创建zoo.cfg文件。
cp -a/op/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
创建完成后,需要配置zoo.cfg 文件,主要配置 ZooKeeper 数据文件目录 dataDir.由于 dataDir的默认值是在/tmp目录下,系统重启后会清空数据,所以需要将文件中dataDir的值设置为自己的本地路径,步骤如下。
(1)创建数据文件目录。
mkdir /opt/zookeepe/zkData
(2)配置 dataDir。
vi /opt/zookeeper/conf/zoo.cfg
将dataDir的值修改为/opt/zookeeper/zkData,对应代码如下。dataDir=/opt/ zookeeper/zkData - 配置 ZooKeeper 的日志路径
(1)创建日志存放目录。
[hadoop@hadoop ~]S sudo mkdir /opt/ zookeeper/logs
(2) 配置ZOO LOG DIR。
[hadoop@hadoop ~]$ vi /opt/zookeeper/libexec/zkEny.sh
将ZOO_LOG_DIR的值修改为/opt/ zookeeper/logs,对应代码如下。ZOO_LOG_DIR=/opt/ zookeepe/logs
3、启动并验证
zookeeper配置完成以后,就可以启动了。与ZooKeeper启动和停止相关的命令都放在SZK_HOME/bin 目录下。
- 启动 zooKeeper
启动:zkServer.sh start
停止:zkServer.sh stop
- 查看 zooKeeper 运行模式:
zkServer.sh status
- 验证
(1) 通过jps命令查看启动的进程,如果看到进程QuorumPeerMain,说明ZooKeeper已安装完并启动成功。
(2)使用ZooKeeper客户端验证连接
[hadoop@hadoop ~]$ zkCli.sh -server localhost:2181
三、hive安装
已安装Hadoop,并安装好MySQL。
1、解压并配置环境变量
- 解压hive-1.1.0-cdh5.4.5.tar.gz到/opt目录下,重命名为hive
- 配置环境变量
将hive的bin目录,添加到环境变量PATH中,保存退出。
export HIVE_HOME=/opt/hive
export PATH=$HIVE_HOME/bin:$PATH
执行source
命令,使Hive环境变量生效。
source /etc/profile
- 由于hive 需要将元数据,存储到MySQL中。所以需要拷贝 mysql-connector-java-5.1.26-bin.jar 到 hive 的 lib 目录下。
cp /opt/software/mysql-connector-java-5.1.26-bin.jar /opt/hive/lib/
2、配置 hive
1.配置Hive,切换到/opt/hive/conf目录下,创建hive的配置文件hive-site.xml。
cd /opt/hive/conf
touch hive-site.xml
使用 vi 打开 hive-site.xml 文件。
vi hive-site.xml
将下列配置添加到 hive-site.xml 中。
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
</configuration>
由于Hive的元数据会存储在Mysql数据库中,所以需要在Hive的配置文件中,指定mysql的相关信息。javax.jdo.option.ConnectionURL
:数据库链接字符串。
此处的主机名要设置为自身系统的主机名。javax.jdo.option.ConnectionDriverName
:连接数据库的驱动包。javax.jdo.option.ConnectionUserName
:数据库用户名。javax.jdo.option.ConnectionPassword
:连接数据库的密码。
此处的数据库的用户名及密码要设置为自身系统的数据库用户名及密码。
2.另外,还需要告诉Hive,Hadoop的环境配置。所以需要修改 hive-env.sh 文件。
先将 hive-env.sh.template 重命名为 hive-env.sh。
mv /opt/hive/conf/hive-env.sh.template /opt/hive/conf/hive-env.sh
使用 vi 打开hive-env.sh文件。
追加 Hadoop的路径,以及 Hive配置文件的路径到文件中。
HADOOP_HOME=/opt/hadoop
export HIVE_CONF_DIR=/opt/hive/conf
3、配置MySQL(用于存储Hive的元数据)
1.首先,需要保证 MySQL 已经启动。执行以下命令,查看MySQL的运行状态。若没有启动,执行启动命令。
service mysqld start
2.开启MySQL数据库。
mysql -u root -p
输入密码进入数据库
创建名为 hive 的数据库,编码格式为 latin1,用于存储元数据。
mysql> create database hive CHARACTER SET latin1;
查看数据库 hive是否创建成功。
mysql> show databases;
输入exit 退出 MySQL
mysql> exit;
4、启动 hive
1.执行测试。由于Hive对数据的处理,依赖MapReduce计算模型,所以需要保证Hadoop相关进程已经启动。( /opt/hadoop/sbin/start-all.sh )
启动Hadoop后,在终端命令行界面,直接输入hive
便可启动Hive命令行模式。
输入HQL语句查询数据库,测试Hive是否可以正常使用。
hive> show databases;
至此Hive安装完毕。
四、HBase 伪分布式环境搭建
1. 解压并配置环境变量
HBase安装包解压完成并配置好环境变量
export HBASE_HOME=/opt/hbase
export PATH=.:$HBASE_HOME/bin:$PATH
2. 配置 hbase
HBase的配置文件存放目录是在安装目录的 conf目录下。伪分布式环境搭建需要配置两个文件:hbase-env.sh
和 hbase-site.xml
。
(1)配置hbase-env.sh 文件
hbase-env.sh 文件用来配置全局 HBase集群系统的特性。在这个文件中,需要添加JDK的安装路径,同时还要配置ZooKeeper。
编辑hbase-env.sh并添加配置内容。
export JAVA_HOME=/opt/jdk
export HBASE_CLASSPATH=/opt/hadoop/etc/hadoop
export HBASE_MANAGES_ZK=false
配置说明如下:
exportJAVA_HOME=/opt/jdk:配置JDK的安装目录。
HBASE_CLASSPATH=/opt/hadoop/etc/hadoop:配置 Hadoop
Master配置文件的路径,也就是core-site.xml的路径。
exportHBASE_MANAGES_ZK=false:该属性可以设置true和false两个值,默认是true,表示使用 HBase自带的ZooKeeper,false表示使用外部安装的ZooKeeper。这里使用自己安装的ZooKeeper,所以设置为false。
(2)配置 hbase-site.xml 文件,编辑文件并添加配置内容:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop:8020/hbase</value>
</property>
<property>
<name>hbase.master</name>
<value>hadoop:60000</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>2181</value>
</property>
</configuration>
配置说明如下
hbase.rootdir;配置HBase数据存放目录,这里使用的是HDFS,注意这个值需泰与安装的 Hadoop 目录下etc/hadoop/core-site.xml文件中的fdefaultS属性值相对应。例如defaultFS的值设置为hdfs:/hadoop.8020/,那么hbase.rootdir 的值就需要设置为dfs://hadoop:8020/hbase. hbase.master:指定 HBase 的
.
HMaster 服务器的地址端口 这里配置 HMaster服务器为hadoop.端口为60000(默认端口)。
.
hbase.cluster.distributedi默认为false,表示单机运行,如果设置为true,表示在分布模式下运行。由于本节采用的是伪分布模式,所以配置为true
.
hbase.zookeeper.quorum:该属性配置的是 ZooKeeper集群各服务器位置,般为奇数个服务器。本节采用的是外部伪分布模式安装的ZooKeeper,所以配置的值是hadoop.如果有多个ZooKeeper节点,配置时要使用逗号进行分隔。
.
hbase.zookeeper.property.clientPort:该属性配置的是ZooKceper的端口号,配置自己搭建的ZooKeeper集群时,这个属性需要与ZooKeeper 安装目录下 conf/zoo.cfg文件中的clientPort属性值一致。
2. 启动
配置完成以后,就可以启动HBase。启动和停止等脚本命令都存放在HBase 安装目录的bin目录下。在HBase启动之前,需要先启动Hadoop以及ZooKeeper,启动顺序为先启动HDFS,再启动ZooKeeper,最后启动HBase;关闭的时候相反,需要先关闭HBase,再关闭ZooKeeper,最后关闭HDFS。
启动命令:SHBASE_HOME/bin/ start-hbase.sh
停止命令:SHBASE_HOME/bin/ stop-hbase.sh
3. 验证
HBase启动完成以后,通常可以使用以下几种方式进行验证。
(1)通过jps命令查看启动的进程。
如果看到启动的进程包括Hadoop中的NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager
进程,以及 ZooKeeper 的QuorumPeerMain
进程,同时多了HMaster、HRegionServer
两个进程,说明HBase已经启动成功。
(2)通过webui的方式验证。
HBase启动后,可以通过webui的方式查看运行环境。网址为:http://hadoop:60010。其中,hadoop为HBase安装的HMaster节点的机器名,60010为默认端口号。
(3)查看Hadoop及ZooKeeper是否有/hbase目录和节点。
如有错误,欢迎私信纠正,谢谢支持!