一、首先创建三台空的虚拟机,在此基础上搭建分布式集群
IP | hostname |
---|---|
192.168.23.130 | hadoop01 |
192.168.23.131 | hadoop02 |
192.168.23.132 | hadoop03 |
二、准备安装包版本
- jdk-1.8
- zookeeper-3.8.1
- hadoop-3.2.4
- hbase-2.4.15
- phoenix-2.4.0-5.1.3
三、服务器环境准备(三个节点都要进行)
1、关闭防火墙
# 临时关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙
systemctl disable firewalld
2、设置主机名
# 三个节点名称分别是hadoop01、hadoop02、hadoop03
hostnamectl set-hostname hadoop01
3、配置主机hosts
vim /etc/hosts
# 添加如下内容
192.168.23.130 hadoop01
192.168.23.131 hadoop02
192.168.23.132 hadoop03
4、设置ssh免密登录
# 所有节点都需要执行,连续按三次回车,在.ssh目录下生成id_rsa和id_rsa.pub
ssh-keygen
# 分发密钥,所有节点都需要执行三次,仅需要修改机器名称
ssh-copy-id hadoop01
四、安装JDK
# 解压tar包
tar -zxvf jdk-8u291-linux-x64.tar.gz
# 移动解压后得包到/opt/java目录下
mv jdk1.8.0_291 /opt/java
分发JDK安装包到其他节点
cd /opt
# 分发java包到其他节点
scp -r java hadoop02:$PWD
配置JDK环境变量(所有节点都需要执行)
# 在 /etc/profile 文件末尾加上JDK环境变量
vim /etc/profile
# 内容如下
export JAVA_HOME=/opt/java
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.har:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
# 加载环境变量使其生效
source /etc/profile
# 测试环境变量是否生效
java -version
五、安装zookeeper
# 解压zookeeper包
tar -zxvf apache-zookeeper-3.8.1-bin.tar.gz
# 移动解压后得包到/opt/zookeeper目录下
mv apache-zookeeper-3.8.1-bin /opt/zookeeper
修改zookeeper配置
# 进入zookeeper包
cd /opt/zookeeper
# 复制zoo_sample.cfg模板配置文件
cp zoo_sample.cfg zoo.cfg
# 修改配置文件
vim zoo.cfg
# 修改内容如下
dataDir=/opt/zookeeper/data
添加zookeeper集群信息,在zoo.cfg末尾添加对应集群节点信息
server.1=hadoop01:2555:3555
server.2=hadoop02:2555:3555
server.3=hadoop03:2555:3555
添加zookeeper数据目录并创建节点ID对应集群节点信息
# 创建data目录
mkdir /opt/zookeeper/data
# 在/opt/zookeeper/data创建myid文件
cd /opt/zookeeper/data
# 修改节点ID
vim myid
# 内容如下(三个节点得内容分别是1,2,3)
1
分发zookeeper文件到其他节点。
cd /opt
scp -r zookeeper hadoop02:$PWD
注意:文件分发完后需要到每个节点将myid中得内容改成对应节点得ID,一定不能漏改和改错,否则zookeeper启动将会失败
启动zookeeper(所有节点均需执行)
# 进入zookeeper的bin目录
cd /opt/zookeeper/bin
# 启动zookeeper
./zkServer.sh start
# 查看zookeeper状态
./zkServer.sh status
使用JPS查看zookeeper进行,zookeeper的进程名称为QuorumPeerMain
六、安装hadoop
部署hadoop集群,NameNode和SecondaryNameNode不要安装在一台机器上面。ResourceManager也很消耗内存,所以不要和NameNode和SecondaryNameNode配置到同一台机器上面。
按照如下表格进行配置(后面通过JPS检查集群是就根据这个表格来进行检查)
hadoop01 | hadoop02 | hadoop03 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
# 解压hadoop包
tar -zxvf hadoop-3.2.4.tar.gz
# 移动解压后得包到/opt/hadoop目录下
mv hadoop-3.2.4 /opt/hadoop
(1)修改hadoop-env.sh配置
# 进入hadoop配置目录
cd /opt/hadoop/etc/hadoop
# 修改hadoop-env.sh
vim hadoop-env.sh
# 修改内容如下
export JAVA_HOME=/opt/java
export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
# 加载配置
source hadoop-env.sh
(2)修改core-site.xml配置
vim core-site.xml
将core-site.xml中的配置文件修改成如下内容
<configuration>
<!-- 指定namenode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为 root -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
</configuration>
(3)修改hdfs-site.xml配置
vim hdfs-site.xml
将hdfs-site.xml中的配置文件修改成如下内容
<configuration>
<!-- nn web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop01:9870</value>
</property>
<!-- 2nn web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop03:9868</value>
</property>
</configuration>
(4)修改mapred-site.xml配置
vim mapred-site.xml
将mapred-site.xml中的配置文件修改成如下内容
<configuration>
<!-- mapreduce的工作模式:yarn -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(5)修改yarn-site.xml配置
vim yarn-site.xml
将yarn-site.xml中的配置文件修改成如下内容
<configuration>
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop02</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop01:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
(6)编辑workers
vim workers
# 修改成如下内容
hadoop01
hadoop02
hadoop03
分发配置后的hadoop包到其他节点
cd /opt
# 分发安装包
scp -r hadoop hadoop02:$PWD
配置hadoop环境变量(所有节点均需执行)
# 在 /etc/profile 文件末尾加上hadoop环境变量
vim /etc/profile
# 内容如下
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
# 加载环境变量使其生效
source /etc/profile
# 测试环境变量是否生效
hadoop version
启动hadoop集群
# 在hadoop01初始化hadoop集群
hdfs namenode -format
# 在hadoop01节点启动HDFS
start-dfs.sh
# 在hadoop02节点启动YARN
start-yarn.sh
验证hadoop集群是否配置成功
-
web页面访问
查看HDFS的namenode:http://192.168.23.130:9870
查看 YARN 的 ResourceManager:http://192.168.23.131:8088 -
JPS查看
使用JPS查看各个节点的进程状态是否跟前面规划的表格中的进程名称一致
七、安装HBase
# 解压hbase包
tar -zxvf hbase-2.4.15-bin.tar.gz
# 移动解压后得包到/opt/hbase目录下
mv hbase-2.4.15-bin /opt/hbase
(1)修改hbase-env.sh配置
cd /opt/hbase/conf
# 修改hbase-env.sh
vim hbase-env.sh
# 修改内容如下
export JAVA_HOME=/opt/java
export HBASE_MANAGES_ZK=false
(2)修改hbase-site.xml配置
vim hbase-site.xml
将hbase-site.xml中的配置文件修改成如下内容
<configuration>
<!-- V2.1版本,在分布式情况下, 设置为false -->
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<!-- 这个目录是 RegionServer 的共享目录,用来持久化 HBase。特别注意的是 hbase.rootdir 里面的 HDFS 地址是要跟 Hadoop 的 core-site.xml 里面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、端口必须一致 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop01:8020/hbase</value>
</property>
<!-- Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定master端口,默认也是16000 -->
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<!-- 本地文件系统的临时文件夹。可以修改到一个更为持久的目录上。(/tmp会在重启时清除) -->
<property>
<name>hbase.tmp.dir</name>
<value>/opt/hbase/tmp</value>
</property>
<!-- 列出全部的 ZooKeeper 的主机,用逗号隔开 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop01,hadoop02,hadoop03</value>
</property>
<!-- ZooKeeper 快照的存储位置,默认值为 /tmp -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/zookeeper/zkData</value>
</property>
</configuration>
(3)配置regionservers
vim regionservers
# 内容如下
hadoop01
hadoop02
hadoop03
复制jar包到lib
cp /opt/hbase/lib/client-facing-thirdparty/htrace-core4-4.2.0-incubating.jar /opt/hbase/lib/
分发配置后的hbase包到其他节点
cd /opt
# 分发安装包
scp -r hbase hadoop02:$PWD
配置HBase环境变量(所有节点均需执行)
# 在 /etc/profile 文件末尾加上hbase环境变量
vim /etc/profile
# 内容如下
export HBASE_HOME=/opt/hbase
export PATH=$PATH:${HBASE_HOME}/bin:${HBASE_HOME}/sbin
# 加载环境变量使其生效
source /etc/profile
# 测试环境变量是否生效
hbase version
启动HBase
start-hbase.sh
验证HBase集群是否配置成功
-
web页面访问
http://192.168.23.131:16010 -
JPS查看
使用JPS查看hadoop01是否存在HMaster、HRegionServer进程名称
查看其他节点是否存在HRegionServer进程名称
八、安装phoenix
# 解压phoenix包
tar -zxvf phoenix-hbase-2.4.0-5.1.3-bin.tar.gz
# 移动解压后得包到/opt/phoenix目录下
mv phoenix-hbase-2.4.0-5.1.3-bin /opt/phoenix
拷贝jar包到 /opt/hbase/lib目录
cp /opt/phoenix/phoenix-server-hbase-2.4.0-5.1.3.jar /opt/hbase/lib/
将jar分发到其他节点
scp /opt/phoenix/phoenix-server-hbase-2.4.0-5.1.3.jar hadoop02:/opt/hbase/lib/
修改hbase-site.xml配置(在原配置文件中的configuration中添加配置,不要覆盖之前的配置)
cd /opt/hbase/conf
vim hbase-site.xml
添加的内容如下
<!-- 支持HBase命名空间映射 -->
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<property>
<name>phoenix.schema.mapSystemTablesToNamespace</name>
<value>true</value>
</property>
<!-- 支持索引预写日志编码 -->
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
拷贝hbase-site.xml到phoenix中
cp /opt/hbase/conf/hbase-site.xml /opt/phoenix/bin/
将hbase-site.xml分发到其他节点
cd /opt/hbase/conf
scp hbase-site.xml haoop02:$PWD
重启HBase
# 关闭hbase
stop-hbase.sh
# 启动hbase
start-hbase.sh
验证phoenix是否安装成功
cd /opt/phoenix/bin
# 启动phoenix客户端(首次启动加载时间会比较长,加载过程中不要强制退出)
./sqlline.py hadoop01:2181
成功进入phoenix客户端后可以查看phoenix中的所有表
# 查看所有表
!table