说明:
## hbase和hadoop 版本依赖查看地址
https://hbase.apache.org/book.html#basic.prerequisites
## zookeeper 下载地址
http://mirror.bit.edu.cn/apache/zookeeper/
## hadoop 下载地址
https://mirror.bit.edu.cn/apache/hadoop/common/
## hbase 下载地址
http://mirror.bit.edu.cn/apache/hbase/
Step1. java安装
如果安装跳过 没有安装请参考安装java文档安装
Step2. zookeeper安装
## 说明
## 安装之前 需要安装java
## 模拟三个zookeeper节点 部署集群 如果需要多个节点 那么相对应修改配置
1. 创建目录
mkdir -p /opt/zookeeper/zookeeper1/data
mkdir -p /opt/zookeeper/zookeeper2/data
mkdir -p /opt/zookeeper/zookeeper3/data
mkdir -p /opt/zookeeper/zookeeper1/datalog
mkdir -p /opt/zookeeper/zookeeper2/datalog
mkdir -p /opt/zookeeper/zookeeper3/datalog
2.解压
tar -xvf zookeeper-3.4.10.tar.gz -C /opt/zookeeper/zookeeper1/
tar -xvf zookeeper-3.4.10.tar.gz -C /opt/zookeeper/zookeeper2/
tar -xvf zookeeper-3.4.10.tar.gz -C /opt/zookeeper/zookeeper3/
3. 创建myid
## 集群 要保证每一个zookeeper的myid不一样 且与接下来配置server1的数组相对应
cd /data/zookeeper/zookeeper1/data/
touch myid
vim myid
## 实例 编辑数字1 当然这个值可以改 但与配置一致即可保存退出
1
:wq 保存退出
cd /data/zookeeper/zookeeper2/data/
touch myid
vim myid
## 实例 编辑数字2 当然这个值可以改 但与配置一致即可保存退出
2
:wq 保存退出
cd /data/zookeeper/zookeeper3/data/
touch myid
vim myid
## 实例 编辑数字3 当然这个值可以改 但与配置一致即可保存退出
3
:wq 保存退出
4. 修改配置zoo.cfg(其他一样 clientPort需要修改)
cp /data/zookeeper/zookeeper1/zookeeper1/conf/zoo_sample.cfg zoo.cfg
cp /data/zookeeper/zookeeper2/zookeeper2/conf/zoo_sample.cfg zoo.cfg
cp /data/zookeeper/zookeeper3/zookeeper3/conf/zoo_sample.cfg zoo.cfg
vim /data/zookeeper/zookeeper1/zookeeper1/conf/zoo.cfg
vim /data/zookeeper/zookeeper2/zookeeper1/conf/zoo.cfg
vim /data/zookeeper/zookeeper3/zookeeper1/conf/zoo.cfg
## 在配置文件中末尾追加
## 这里的server.1的数字就是当前zookeeper节点中myid数字
## servername1 是所在服务机器名称 需要对应修改
## 如果是同一台机器 需要修改端口 需要不一样
## clientPort 如果是同一台机器部署集群 那么需要修改端口
clientPort=1181 ## 其他两台一次为 2181 , 3181
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/datalog
server.1=servername1:2888:3888
server.2=servername2:4888:5888
server.3=servername3:6888:7888
5. 启动
## 三台机器以此启动
cd /data/zookeeper/zookeeper1/zookeeper1/bin
./zkServer.sh start
cd /data/zookeeper/zookeeper2/zookeeper2/bin
./zkServer.sh start
cd /data/zookeeper/zookeeper3/zookeeper3/bin
./zkServer.sh start
6. 检测
## 查看三台机器状态 其中会有 follower 和 leader
cd /data/zookeeper/zookeeper3/zookeeper3/bin
./zkServer.sh status
Step3. hadoop安装
1. 解压安装包
mkdir -p /opt/hadoop
cd /opt/hadoop
tar -xvf hadoop-3.2.1.tar.gz
2. 创建hadoop依赖目录
mkdir /data/hadoop/tmp
mkdir /data/hadoop/var
mkdir /data/hadoop/dfs
cd /data/hadoop/dfs
mkdir name
mkdir data
3. 修改/etc/profile
vim /etc/profile
#hadoop
export HADOOP_HOME=/opt/hadoop/hadoop-3.2.1
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
4. 修改core-site.xml配置文件
cd /opt/hadoop/hadoop-3.2.1/etc/hadoop
vim core-site.xml
## 在<configuration>节点内加入配置
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>localhost:1181,localhost:2181,localhost:3181</value>
</property>
## </configuration>
5. 修改hadoop-env.sh
vim hadoop-env.sh
## 去掉注释# 更改自己jdk路径
export JAVA_HOME=/usr/local/lib/jdk1.8.0_131
6. 修改hdfs-site.xml
vim hdfs-site.xml
## 在<configuration>节点内加入配置
<property>
<name>dfs.name.dir</name>
<value>/data/hadoop/dfs/name</value>
<description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/dfs/data</value>
<description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value> ## 如果是多台机器 配置副本数量 默认配置3
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
<description>need not permissions</description>
</property>
## </configuration>
7. 修改 mapred-site.xml
vim mapred-site.xml
## 在<configuration>节点内加入配置
<property>
<name>mapred.job.tracker</name>
<value>localhost:49001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/data/hadoop/var</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
## </configuration>
8.修改yarn-site.xml文件
vim yarn-site.xml
## 在<configuration>节点内加入配置(注意了,内存根据机器配置越大越好)
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<description>The address of the applications manager interface in the RM.</description>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<description>The address of the scheduler interface.</description>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<description>The http address of the RM web application.</description>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<description>The https adddress of the RM web application.</description>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<description>The address of the RM admin interface.</description>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
<discription>每个节点可用内存,单位MB,默认8182MB</discription>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
## </configuration>
9. 启动
1. 在namenode执行初始化
## 因为hserver1是namenode,hserver2和hserver3都是datanode,所以只需要对hserver1进行初始化操作,也就是对hdfs进行格式化。进入到hserver1这台机器的/opt/hadoop/hadoop-2.8.0/bin目录,也就是执行命令:
cd /opt/hadoop/hadoop-3.2.1/bin
./hadoop namenode -fomat
格式化成功后,可以在看到在/data/hadoop/dfs/name/目录多了一个current目录,而且该目录内有一系列文件
2. 在namenode 执行启动命令
cd /opt/hadoop/hadoop-3.2.1/sbin
./start-all.sh
3. 注意
1. 错误如下
## 解决方案
在/opt/hadoop/hadoop-3.2.1/sbin目录下的 start-dfs.sh stop-dfs.sh 文件开始处添加如下
## 解决方案
在/opt/hadoop/hadoop-3.2.1/sbin目录下的 start-yarn.sh stop-yarn.sh 文件开始处添加如下
2. 如果提示权限不足
##解决方法
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
##验证
ssh localhost
10. 检测
## 可能需要关闭防火墙
9000端口出现
本地电脑访问 http://192.168.31.14:8080/
Step4. hbase安装
1. 解压
cd /opt/hbase
tar -xvf hbase-2.3.2-bin.tar.gz
2.修改环境变量配置
vim /etc/profile
ZK_HOME=/opt/zookeeper/zookeeper-3.4.10
HBASE_HOME=/opt/hbase/hbase-2.3.2
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$ZK_HOME/bin
source /etc/profile
3. 创建依赖目录
cd /opt/hbase
mkdir tmp
mkdir pids
4.修改hbase-env.sh
cd /opt/hbase/hbase-2.3.2/conf
vim hbase-env.sh
export JAVA_HOME=/usr/local/lib/jdk1.8.0_131
export HADOOP_HOME=/opt/hadoop/hadoop-3.2.1
export HBASE_HOME=/opt/hbase/hbase-2.3.2
#Extra Java CLASSPATH elements. Optional.
export HBASE_CLASSPATH=/opt/hadoop/hadoop-3.2.1/etc/hadoop
export HBASE_PID_DIR=/data/hbase/pids
export HBASE_MANAGES_ZK=false
5. 修改hbase-site.xml
vim hbase-site.xml
## 在<configuration>节点内增加以下配置
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/data/hbase/tmp</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
<description>The directory shared byregion servers.</description>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
<description>Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect.
</description>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>120000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost:1181,localhost:2181,localhost:3181</value>
</property>
## </configuration>
6.修改regionservers
vim regionservers
localhost
7.启动
Hbase是基于hadoop提供的分布式文件系统的,所以启动Hbase之前,先确保hadoop在正常运行,另外Hbase还依赖于zookkeeper,本来我们可以用hbase自带的zookeeper,但是我们上面的配置启用的是我们自己的zookeeper集群,所以在启动hbase前,还要确保zokeeper已经正常运行。
Hbase可以只在hadoop的某个namenode节点上安装,也可以在所有的hadoop节点上安装,但是启动的时候只需要在一个节点上启动就行了,本例中,我在hserver1、hserver2、hserver3都安装了Hbase,启动的时候只需要在hserver1上启动就OK。
cd /opt/hbase/hbase-2.3.2
./start-hbase.sh
8.检测
jps
cd /opt/hbase/hbase-2.3.2/bin
./hbase shell
## 输入 status