伪分布式模式也是在一台单机上运行,集群中的结点由一个NameNode和若干个DataNode组,另有一个SecondaryNameNode作为NameNode的备份。一个机器上,既当namenode,又当datanode,或者说既是jobtracker,又是tasktracker。没有所谓的在多台机器上进行真正的分布式计算,故称为"伪分布式"。开启多个进程模拟完全分布式,但是并没有真正提高程序执行的效率。hadoop伪分布式集群以后只是一个空的hadoop,只有YARN,MapReduce,HDFS,而这些实际上我们一般不会直接使用,而是需要另外部署Hadoop的其他组件来辅助使用。下面开始搭建hadoop伪分布式。
一、hadoop安装
1、环境搭建
本文是基于CentOS 7 , jdk1.8 和Hadoop2.6.0环境搭建,准备好CentOS7 64位的镜像,然后在VMware上安装虚拟机
1)配置网络
修改/etc/sysconfig/network-scripts/ifcfg-ens33
配置文件,在最后追加比如下面的配置:
BOOTPROTO="static" #表示静态获取 ONBOOT="yes" #开机自动静态获取 IPADDR=192.168.134.151 #ip地址 NETMASK=255.255.255.0 #子网掩码 GATEWAY=192.168.134.2 #网关 DNS1=8.8.8.8 #DNS
重启网络服务
- centos6重启方法:service network restart
- centos7重启方法:systemctl restart network
2)关闭防火墙
systemctl status firewalld.service #查看防火墙状态 systemctl stop firewalld.service #关闭防火墙: systemctl disable firewalld.service #禁用防火墙开机自启
3)修改主机名
方法一:通过命令 hostnamectl set-hostname “主机名”
来修改主机名
方法二:编辑 /etc/ hostname 文件,删除原有内容,添加主机名:hadoop,保存退出
4)修改IP映射
使用 vi 编辑器打开 /etc/hosts 文件
vi /etc/hosts
在文件添加内容,格式:IP地址 主机名(中间用空格分隔),例如:
192.168.242.130 hadoop
设置完成后,重启网路服务: systemctl restart network
,使用 ping 命令 ping 一下主机名,如果可以ping 通表示设置成功。
4)配置免密登录
Hadoop 中的NameNode和DataNode是通过ssh进行通信,所以先完成 SSH免密码登录。操作如下:
[hadoop@hadoop~]$ ssh-keygen -t rsa [hadoop@hadoop ~]$ ssh-copy-id localhost
ssh hadoop
可以实现免密码登录到本机。验证方式如下:
2、配置环境变量
将jdk与hadoop减压,配置环境变量,添加以下内容:
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
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的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启动成功后,通常使用以下几种方式进行验证。
通过 jps 命令查看启动的进程,命令执行后,如果可以看到
NameNode
、DataNode
、SecondaryNameNode
、ResourceManager
、NodeManager
进程,证明 Hadoop平台已经启动成功。通过webui验证, HDFS的网址:http://hadoop:50070 ,YARN 的网址:http://hadoop:8088
start-all.sh
是启动Hadoop所有进程,
单独启动进程的时候要先启动HDFS(start-dfs.sh),然后再启动YARN(start-yarn.sh)
二、zookeeper安装
1、解压安装
解压缩包并重命名,配置环境变量vi /etc/profile,添加如下:
export ZK HOME=/opt/zookeeper export PATH=SZK_HOME/bin:SPATH
2、配置 ZooKeeper
ZooKeeper配置文件ZK_HOME/conf/目录下,默认是没有该文件,但是提供了zoo_sample.cfg模板文件。需要复制zoo.cfg文件。
cp zoo_sample.cfg 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
(3) 配置 ZooKeeper 的日志路径
mkdir /opt/zookeeper/logs
(2) 配置ZOO LOG DIR。
vi /opt/zookeeper/libexec/zkEny.sh #将ZOO_LOG_DIR的值修改为/opt/zookeeper/logs ZOO_LOG_DIR=/opt/zookeeper/logs
3、启动
ZooKeeper相关的命令都放在SZK_HOME/bin 目录下。
启动 zooKeeper
启动:zkServer.sh start
停止:zkServer.sh stop
查看 zooKeeper 运行模式:
zkServer.sh status
验证
- 通过jps命令查看进程,如果看到进程QuorumPeerMain,说明ZooKeeper启动成功。
- 使用ZooKeeper客户端验证连接,
zkCli.sh -server localhost:2181
三、hive安装
1、配置环境变量
解压hive重命名为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-env.sh 文件,添加Hadoop的环境配置。
先将 hive-env.sh.template 重命名为 hive-env.sh。
mv /opt/hive/conf/hive-env.sh.template /opt/hive/conf/hive-env.sh
在hive-env.sh文件里 追加 Hadoop的路径,以及 Hive配置文件的路径到文件中。
HADOOP_HOME=/opt/hadoop export HIVE_CONF_DIR=/opt/hive/conf
3、配置MySQL
首先保证 MySQL 已经启动(用于存储Hive的元数据)执行启动命令
service mysqld start
开启MySQL数据库。
mysql -u root -p
创建名为 hive 的数据库,编码格式为 latin1,用于存储元数据。
mysql> create database hive CHARACTER SET latin1;
查看数据库 hive是否创建成功。
mysql> show databases;
退出 MySQL
mysql> exit;
4、启动
启动Hadoop后,在终端命令行界面,直接输入hive
便可启动Hive命令行模式。
输入HQL语句查询数据库,测试Hive是否可以正常使用。
hive> show databases;
四、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启动之前,需要先启动Hadoop以及ZooKeeper,启动顺序为先启动HDFS,再启动ZooKeeper,最后启动HBase;关闭的时候相反,需要先关闭HBase,再关闭ZooKeeper,最后关闭HDFS。
启动命令:SHBASE_HOME/bin/ start-hbase.sh
停止命令:SHBASE_HOME/bin/ stop-hbase.sh
HBase启动完成以后,使用以下几种方式进行验证。
通过jps命令查看启动的进程。
如果看到启动的进程包括Hadoop中的NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager
进程,以及 ZooKeeper 的QuorumPeerMain
进程,同时多了HMaster、HRegionServer
两个进程,说明HBase已经启动成功。通过webui的方式验证。
HBase启动后,可以通过webui的方式查看运行环境。网址为:http://hadoop:60010查看Hadoop及ZooKeeper是否有/hbase目录和节点。
如有错误,欢迎私信纠正,谢谢支持!