单机环境安装Zookeeper+Hadoop+Hbase+Phoenix

单机环境安装Zookeeper+Hadoop+Hbase+Phoenix

环境准备

系统环境:Centos 7.6

配置映射

[root@ java]# vim /etc/hosts

添加如下配置:

# 文件末尾增加
本机IP地址  hadoop001

使用软件版本说明
因为Apache的Hadoop版本和Hbase的版本不太稳定所以本文所用的都为CDH版本

<nav>
<a href="# 一.安装JDK">一.安装JDK</a>

        <a href="#1.1 下载并解压">1.1 下载并解压</a>

        <a href="#1.2 设置环境变量">1.2 设置环境变量</a>

        <a href="#1.3 检查是否安装成功">1.3 检查是否安装成功</a>

<a href="#二.安装Zookeeper">二.安装Zookeeper</a>

        <a href="#2.1 下载">2.1 下载</a>

        <a href="#2.2 解压">2.2 解压</a>

        <a href="#2.3 配置环境变量">2.3 配置环境变量</a>

        <a href="#2.4 修改配置">2.4 修改配置</a>

        <a href="#2.5 启动">2.5 启动</a>

        <a href="#2.6 验证是否安装成功">2.6 验证是否安装成功</a>

<a href="#三.安装Hadoop">三.安装Hadoop</a>

        <a href="#3.1 配置免密登录">3.1 配置免密登录</a>

            <a href="#3.1.1 生成公私钥">3.1.1 生成公私钥</a>

            <a href="#3.1.2 授权">3.1.2 授权</a>

        <a href="#3.2 Hadoop(HDFS)环境搭建">3.2 Hadoop(HDFS)环境搭建</a>

            <a href="#3.2.1 下载并解压">3.2.1 下载并解压</a>

            <a href="#3.2.2 配置环境变量">3.2.2 配置环境变量</a>

            <a href="#3.2.3 修改Hadoop配置">3.2.3 修改Hadoop配置</a>

            <a href="#3.2.4 关闭防火墙">3.2.4 关闭防火墙</a>

            <a href="#3.2.5 初始化">3.2.5 初始化</a>

            <a href="#3.2.6 启动HDFS">3.2.6 启动HDFS</a>

            <a href="#3.2.7 验证是否启动成功">3.2.7 验证是否启动成功</a>

        <a href="#3.3 Hadoop(YARN)环境搭建">3.3 Hadoop(YARN)环境搭建</a>

            <a href="#3.3.1 修改配置">3.3.1 修改配置</a>

            <a href="#3.3.2 启动服务">3.3.2 启动服务</a>

            <a href="#3.3.3 验证是否启动成功">3.3.3 验证是否启动成功</a>

<a href="#四.安装Hbase">四.安装Hbase</a>

        <a href="#4.1 软件下载解压">4.1 软件下载解压</a>

        <a href="#4.2 配置环境变量">4.2 配置环境变量</a>

        <a href="#4.3 进行HBase相关配置">4.3 进行HBase相关配置</a>

        <a href="#4.4 启动Hbase">4.4 启动Hbase</a>

        <a href="#4.5 验证是否安装成功">4.5 验证是否安装成功</a>

<a href="#五.安装Phoenix">五.安装Phoenix</a>

        <a href="#5.1 下载并解压">5.1 下载并解压</a>

        <a href="#5.2 拷贝Jar包">5.2 拷贝Jar包</a>

        <a href="#5.3 重启 Region Servers">5.3 重启 Region Servers</a>

        <a href="#5.4 启动Phoenix">5.4 启动Phoenix</a>

        <a href="#5.5 验证是否安装成功">5.5 验证是否安装成功</a>

一.安装JDK

JDK 版本:jdk 1.8.0_20

<a name="1.1 下载并解压">1.1 下载并解压</a>

官网 下载所需版本的 JDK,这里我下载的版本为JDK 1.8 ,下载后进行解压:

[root@ java]# tar -zxvf jdk-8u201-linux-x64.tar.gz

<a name="1.2 设置环境变量">1.2 设置环境变量</a>

[root@ java]# vi /etc/profile

添加如下配置:

export JAVA_HOME=/usr/java/jdk1.8.0_201  
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH

执行 source 命令,使得配置立即生效:

[root@ java]# source /etc/profile

<a name="1.3. 检查是否安装成功">1.3. 检查是否安装成功</a>

[root@ java]# java -version

显示出对应的版本信息则代表安装成功。

java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

<a name="二.安装Zookeeper">二.安装Zookeeper</a>

<a name="2.1 下载">2.1 下载</a>

下载对应版本 Zookeeper,这里我下载的版本 3.4.14。官方下载地址:https://archive.apache.org/dist/zookeeper/

# wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

<a name="2.2 解压">2.2 解压</a>

# tar -zxvf zookeeper-3.4.14.tar.gz

<a name="2.3 配置环境变量">2.3 配置环境变量</a>

# vim /etc/profile

添加环境变量:

export ZOOKEEPER_HOME=/usr/app/zookeeper-3.4.14
export PATH=$ZOOKEEPER_HOME/bin:$PATH

使得配置的环境变量生效:

# source /etc/profile

<a name="2.4 修改配置">2.4 修改配置</a>

进入安装目录的 conf/ 目录下,拷贝配置样本并进行修改:

# cp zoo_sample.cfg  zoo.cfg

指定数据存储目录和日志文件目录(目录不用预先创建,程序会自动创建),修改后完整配置如下:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

配置参数说明:

  • tickTime:用于计算的基础时间单元。比如 session 超时:N*tickTime;
  • initLimit:用于集群,允许从节点连接并同步到 master 节点的初始化连接时间,以 tickTime 的倍数来表示;
  • syncLimit:用于集群, master 主节点与从节点之间发送消息,请求和应答时间长度(心跳机制);
  • dataDir:数据存储位置;
  • dataLogDir:日志目录;
  • clientPort:用于客户端连接的端口,默认 2181

<a name="2.5 启动">2.5 启动</a>

由于已经配置过环境变量,直接使用下面命令启动即可:

zkServer.sh start

<a name="2.6 验证是否安装成功">2.6 验证是否安装成功</a>

使用 JPS 验证进程是否已经启动,出现 QuorumPeerMain 则代表启动成功。

[root@hadoop001 bin]# jps
3814 QuorumPeerMain

<a name="三.安装Hadoop">三.安装Hadoop</a>

<a name="3.1 配置免密登录">3.1 配置免密登录</a>

Hadoop 组件之间需要基于 SSH 进行通讯。

<a name="3.1.1 生成公私钥">3.1.1 生成公私钥</a>

执行下面命令行生成公匙和私匙:

ssh-keygen -t rsa

<a name="3.1.2 授权">3.1.2 授权</a>

进入 ~/.ssh 目录下,查看生成的公匙和私匙,并将公匙写入到授权文件:

[root@@hadoop001 sbin]#  cd ~/.ssh
[root@@hadoop001 .ssh]# ll
-rw-------. 1 root root 1675 3 月  15 09:48 id_rsa
-rw-r--r--. 1 root root  388 3 月  15 09:48 id_rsa.pub
# 写入公匙到授权文件
[root@hadoop001 .ssh]# cat id_rsa.pub >> authorized_keys
[root@hadoop001 .ssh]# chmod 600 authorized_keys

<a name="3.2 Hadoop(HDFS)环境搭建">3.2 Hadoop(HDFS)环境搭建</a>

<a name="3.2.1 下载并解压">3.2.1 下载并解压</a>

下载 Hadoop 安装包,这里我下载的是 CDH 版本的,下载地址为:http://archive.cloudera.com/cdh5/cdh/5/

# 解压
tar -zvxf hadoop-2.6.0-cdh5.16.2.tar.gz 

<a name="3.2.2 配置环境变量">3.2.2 配置环境变量</a>

# vi /etc/profile

配置环境变量:

export HADOOP_HOME=/usr/app/hadoop-2.6.0-cdh5.16.2
export  PATH=${HADOOP_HOME}/bin:$PATH

执行 source 命令,使得配置的环境变量立即生效:

# source /etc/profile

<a name="3.2.3 修改Hadoop配置">3.2.3 修改Hadoop配置</a>

进入 ${HADOOP_HOME}/etc/hadoop/ 目录下,修改以下配置:

1. hadoop-env.sh

# JDK安装路径
export  JAVA_HOME=/usr/java/jdk1.8.0_201/

2. core-site.xml

<configuration>
    <property>
        <!--指定 namenode 的 hdfs 协议文件系统的通信地址-->
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop001:8020</value>
    </property>
    <property>
        <!--指定 hadoop 存储临时文件的目录-->
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
    </property>
</configuration>

3. hdfs-site.xml

指定副本系数和临时文件存储位置:

<configuration>
    <property>
        <!--由于我们这里搭建是单机版本,所以指定 dfs 的副本系数为 1-->
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

4. slaves

配置所有从属节点的主机名或 IP 地址,由于是单机版本,所以指定本机即可,编辑slaves设置为:

hadoop001

<a name="3.2.4 关闭防火墙">3.2.4 关闭防火墙</a>

不关闭防火墙可能导致无法访问 Hadoop 的 Web UI 界面:

# 查看防火墙状态
sudo firewall-cmd --state
# 关闭防火墙:
sudo systemctl stop firewalld.service

<a name="3.2.5 初始化">3.2.5 初始化</a>

第一次启动 Hadoop 时需要进行初始化,进入 ${HADOOP_HOME}/bin/ 目录下,执行以下命令:

[root@hadoop001 bin]# ./hdfs namenode -format

<a name="3.2.6 启动HDFS">3.2.6 启动HDFS</a>

进入 ${HADOOP_HOME}/sbin/ 目录下,启动 HDFS:

[root@hadoop001 sbin]# ./start-dfs.sh

<a name="3.2.7 验证是否启动成功">3.2.7 验证是否启动成功</a>

方式一:执行 jps 查看 NameNodeDataNode 服务是否已经启动:

[root@hadoop001 hadoop-2.6.0-cdh5.16.2]# jps
9137 DataNode
9026 NameNode
9390 SecondaryNameNode

方式二:查看 Web UI 界面,端口为 50070
<div><img src="http://ww1.sinaimg.cn/large/c4d294bfly1gawcrlnew0j22bg16o48d.jpg"/></div>

<a name="3.3 Hadoop(YARN)环境搭建"></a>

<a name="3.3.1 修改配置">3.3.1 修改配置</a>

进入 ${HADOOP_HOME}/etc/hadoop/ 目录下,修改以下配置:

1. mapred-site.xml

# 如果没有mapred-site.xml,则拷贝一份样例文件后再修改
cp mapred-site.xml.template mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

2. yarn-site.xml

<configuration>
    <property>
        <!--配置 NodeManager 上运行的附属服务。需要配置成 mapreduce_shuffle 后才可以在 Yarn 上运行 MapReduce 程序。-->
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

<a name="3.3.2 启动服务">3.3.2 启动服务</a>

进入 ${HADOOP_HOME}/sbin/ 目录下,启动 YARN:

./start-yarn.sh

<a name="3.3.3 验证是否启动成功">3.3.3 验证是否启动成功</a>

方式一:执行 jps 命令查看 NodeManagerResourceManager 服务是否已经启动:

[root@hadoop001 hadoop-2.6.0-cdh5.16.2]# jps
9137 DataNode
9026 NameNode
12294 NodeManager
12185 ResourceManager
9390 SecondaryNameNode

方式二:查看 Web UI 界面,端口号为 8088
<div><img src="http://ww1.sinaimg.cn/large/c4d294bfly1gawcteetpvj22bg16qwr9.jpg"/></div>

<a name="四.安装Hbase">四.安装Hbase</a>

HBase 的版本必须要与 Hadoop 的版本兼容,不然会出现各种 Jar 包冲突。这里我 Hadoop 安装的版本为 hadoop-2.6.0-cdh5.16.2,为保持版本一致,选择的 HBase 版本为 hbase-1.2.0-cdh5.14.2 。所有软件版本如下:

  • Hadoop 版本: hadoop-2.6.0-cdh5.16.2
  • HBase 版本: hbase-1.2.0-cdh5.14.2
  • JDK 版本:JDK 1.8

这里为版本兼容情况
<div align="center"> <img src="http://ww1.sinaimg.cn/large/c4d294bfly1gawbiwzz7bj20r50n2myr.jpg"/></div>

<a name="4.1 软件下载解压">4.1 软件下载解压</a>

下载后进行解压,下载地址:http://archive.cloudera.com/cdh5/cdh/5/

# tar -zxvf hbase-1.2.0-cdh5.14.2.tar.gz

<a name="4.2 配置环境变量">4.2 配置环境变量</a>

# vim /etc/profile

添加环境变量:

export HBASE_HOME=/usr/app/hbase-1.2.0-cdh5.14.2
export PATH=$HBASE_HOME/bin:$PATH

使得配置的环境变量生效:

# source /etc/profile

<a name="4.3 进行HBase相关配置">4.3 进行HBase相关配置</a>

1.修改安装目录下的 conf/hbase-env.sh,指定 JDK 的安装路径:

# The java implementation to use.  Java 1.7+ required.
export JAVA_HOME=/usr/java/jdk1.8.0_201
# 使用外部zookeeper管理hbase
export HBASE_MANAGES_ZK=flase

2.修改安装目录下的 conf/hbase-site.xml,增加如下配置 (hadoop001 为主机名):

<configuration>
 <!--指定 HBase 以分布式模式运行-->   
 <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
 </property>
 <!--指定 HBase 数据存储路径为 HDFS 上的 hbase 目录,hbase 目录不需要预先创建,程序会自动创建-->   
 <property>
    <name>hbase.rootdir</name>
    <value>hdfs://hadoop001:8020/hbase</value>
  </property>
    <!--指定 zookeeper 数据的存储位置-->   
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/usr/local/zookeeper/data</value>
  </property>
  <!--指定 Hbase Web UI 默认端口-->  
  <property>
    <name>hbase.master.info.port</name>
    <value>60010</value>
  </property>
  <!--指定外置zookeeper--> 
  <property>
   <name>hbase.zookeeper.quorum</name>
   <value>hadoop001:2181</value>
  </property>
</configuration>

3.修改安装目录下的 conf/regionservers,指定 region servers 的地址,修改后其内容如下:

hadoop001

<a name="4.4 启动Hbase">4.4 启动Hbase</a>

# bin/start-hbase.sh

<a name="4.5 验证是否安装成功">4.5 验证是否安装成功</a>

验证方式一 :使用 jps 命令查看进程。其中 HMasterHRegionServer 是 HBase 的进程,HQuorumPeer 是 HBase 内置的 Zookeeper 的进程,其余的为 HDFS 和 YARN 的进程。

[root@hadoop001 conf]# jps
28688 NodeManager
25824 GradleDaemon
10177 Jps
22083 HRegionServer
20534 DataNode
20807 SecondaryNameNode
18744 Main
20411 NameNode
21851 HQuorumPeer
28573 ResourceManager
21933 HMaster

验证方式二 :访问 HBase Web UI 界面,需要注意的是 1.2 版本的 HBase 的访问端口为 60010

<div><img src="http://ww1.sinaimg.cn/large/c4d294bfly1gawcusk23aj22bc170ail.jpg"/></div>

<a name="五.安装Phoenix">五.安装Phoenix</a>

Phoenix 是 HBase 的开源 SQL 中间层,它允许你使用标准 JDBC 的方式来操作 HBase 上的数据。在 Phoenix 之前,如果你要访问 HBase,只能调用它的 Java API,但相比于使用一行 SQL 就能实现数据查询,HBase 的 API 还是过于复杂。Phoenix 的理念是 we put sql SQL back in NOSQL,即你可以使用标准的 SQL 就能完成对 HBase 上数据的操作。同时这也意味着你可以通过集成 Spring Data JPAMybatis 等常用的持久层框架来操作 HBase。

其次 Phoenix 的性能表现也非常优异,Phoenix 查询引擎会将 SQL 查询转换为一个或多个 HBase Scan,通过并行执行来生成标准的 JDBC 结果集。它通过直接使用 HBase API 以及协处理器和自定义过滤器,可以为小型数据查询提供毫秒级的性能,为千万行数据的查询提供秒级的性能。同时 Phoenix 还拥有二级索引等 HBase 不具备的特性,因为以上的优点,所以 Phoenix 成为了 HBase 最优秀的 SQL 中间层。

<a name="5.1 下载并解压">5.1 下载并解压</a>

官方针对 Apache 版本和 CDH 版本的 HBase 均提供了安装包,按需下载即可。官方下载地址: http://phoenix.apache.org/download.html

# 下载
wget http://mirror.bit.edu.cn/apache/phoenix/apache-phoenix-4.14.0-cdh5.14.2/bin/apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz
# 解压
tar tar apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz

<a name="5.2 拷贝Jar包">5.2 拷贝Jar包</a>

按照官方文档的说明,需要将 phoenix server jar 添加到所有 Region Servers 的安装目录的 lib 目录下。

这里由于我搭建的是 HBase 伪集群,所以只需要拷贝到当前机器的 HBase 的 lib 目录下。如果是真实集群,则使用 scp 命令分发到所有 Region Servers 机器上。

cp /usr/app/apache-phoenix-4.14.0-cdh5.14.2-bin/phoenix-4.14.0-cdh5.14.2-server.jar /usr/app/hbase-1.2.0-cdh5.14.2/lib

<a name="5.3 重启 Region Servers">5.3 重启 Region Servers</a>

# 停止Hbase
stop-hbase.sh
# 启动Hbase
start-hbase.sh

<a name="5.4 启动Phoenix">5.4 启动Phoenix</a>

在 Phoenix 解压目录下的 bin 目录下执行如下命令,需要指定 Zookeeper 的地址:

  • 如果 HBase 采用 Standalone 模式或者伪集群模式搭建,则默认采用内置的 Zookeeper 服务,端口为 2181;
  • 如果是 HBase 是集群模式并采用外置的 Zookeeper 集群,则按照自己的实际情况进行指定。
# ./sqlline.py hadoop001:2181

<a name="5.5 验证是否安装成功">5.5 验证是否安装成功</a>

启动后则进入了 Phoenix 交互式 SQL 命令行,可以使用 !table!tables 查看当前所有表的信息

<div><img src="http://ww1.sinaimg.cn/large/c4d294bfly1gawcxfmjfjj227m0xsdz6.jpg"/></div>

本文内容部分摘自[https://github.com/heibaiying/BigData-Notes]

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355