伪分布式模式也是在一台单机上运行,集群中的结点由一个NameNode和若干个DataNode组,另有一个SecondaryNameNode作为NameNode的备份。一个机器上,既当namenode,又当datanode,或者说既是jobtracker,又是tasktracker。没有所谓的在多台机器上进行真正的分布式计算,故称为"伪分布式"。开启多个进程模拟完全分布式,但是并没有真正提高程序执行的效率。hadoop伪分布式集群以后只是一个空的hadoop,只有YARN,MapReduce,HDFS,而这些实际上我们一般不会直接使用,而是需要另外部署Hadoop的其他组件来辅助使用。下面开始搭建hadoop伪分布式。
本文是基于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 重启网络服务
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 可以实现免密码登录到本机。验证方式如下:
将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
1)hadoop-env.sh
export JAVA_HOME=/opt/jdk 2)core-site.xml
fs.defaultFS hdfs://hadoop:8020 3)hdfs-site.xml(确保下面路径中的文件夹是存在的,没有的话先创建)
dfs.namenode.name.dir /opt/hd_space/hdfs/name dfs.datanode.data.dir /opt/hd_space/hdfs/data dfs.replication 1 dfs.permissions false 4)map-site.xml
mapreduce.framework.name yarn 5)yarn-site.xml
yarn.nodemanager.aux-services mapreduce_shuffle 6)slaves
hadoop 首次使用Hadoop平台需要先格式化文件系统。进入到Hadoop的bin目录里执行:hdfs namenode -format
[hadoop@hadoop ~]$ cd /opt/hadoop/bin [hadoop@hadoop ~]$ ./hdfs namenode -format 进入到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)
解压缩包并重命名,配置环境变量vi /etc/profile,添加如下:
export ZK HOME=/opt/zookeeper export PATH=SZK_HOME/bin:SPATH 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 ZooKeeper相关的命令都放在SZK_HOME/bin 目录下。
启动 zooKeeper
启动:zkServer.sh start
停止:zkServer.sh stop
查看 zooKeeper 运行模式:zkServer.sh status
验证
zkCli.sh -server localhost:2181解压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/ 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 中。
javax.jdo.option.ConnectionURL jdbc:mysql://hadoop:3306/hive?createDatabaseIfNotExist=true&useSSL=false javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName root javax.jdo.option.ConnectionPassword 123456 由于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 首先保证 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; 启动Hadoop后,在终端命令行界面,直接输入hive便可启动Hive命令行模式。
输入HQL语句查询数据库,测试Hive是否可以正常使用。
hive> show databases; HBase安装包解压完成并配置好环境变量
export HBASE_HOME=/opt/hbase export PATH=.:$HBASE_HOME/bin:$PATH 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 文件,编辑文件并添加配置内容:
hbase.rootdir hdfs://hadoop:8020/hbase hbase.master hadoop:60000 hbase.cluster.distributed true hbase.zookeeper.quorum hadoop hbase.zookeeper.property.dataDir 2181 配置说明如下
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属性值一致。
在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目录和节点。
如有错误,欢迎私信纠正,谢谢支持!