在本部分中,我们将使用VMware在Centos7上配置一个伪集群的环境
基本环境是:Hadoop+zooKeeper+hbase
搭建伪集群
前期准备
创建虚拟机
需要创建三台:其要求如下
主机名 | 静态ip | 网关 |
---|---|---|
master | 192.168.80.100 | 192.168.80.2 |
slave1 | 102.168.80.101 | 192.168.80.2 |
slave2 | 192.168.80.102 | 192.168.80.2 |
整个创建流程参考该教程:
链接:https://pan.baidu.com/s/19J-o1jRSB4Uw7Ttf73PzWA?pwd=fp36
创建好后先进去把防火墙给狠狠的关掉
systemctl stop firewalld
systemctl disable firewalld
ssh免密登录
注意,以下所有操作,在三台机器上都要做一遍(自然要求三台机器都是开机状态)
修改机器host文件
echo "192.168.80.100 master" >> /etc/hosts
echo "192.168.80.101 slave1" >> /etc/hosts
echo "192.168.80.102 slave2" >> /etc/hosts
生成密钥:在输入以下命令后一直回车即可
ssh-keygen -t rsa
将本机公钥文件复制到其它虚拟机上
回车后输入yes
回车后输入接收方的root密码
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
之后可以尝试一下是否成功
ssh slave1
安装jdk1.8
【在master上操作】
首先卸载原有的所有jdk
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
创建三个新目录
mkdir /opt/data
mkdir /opt/tools
mkdir /opt/module
去oracle官网进行下载https://www.oracle.com/java/technologies/downloads/#java8-linux,下载完成后选择任意方式传输到虚拟机的/opt/tools
目录下(我这里用的是wincp),之后解压到/opt/module
下
tar -zxvf /opt/tools/jdk-8u381-linux-x64.tar.gz -C /opt/module
之后进入/opt/module
为我们解压完的东西重命名为java8(只是为了好记)
cd /opt/module
mv jdk1.8.0_381 java8
之后修改环境变量。进入/etc/profile
vi /etc/profile
将下面的内容复制到文件末尾
export JAVA_HOME=/opt/module/java8
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
刷新一下
source /etc/profile
之后查看是否成功
java -version
出现一下内容,成功
java version "1.8.0_381"
Java(TM) SE Runtime Environment (build 1.8.0_381-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.381-b09, mixed mode)
搭建伪集群Hadoop
安装hadoop
【在master上操作】
进入/opt/tools
后,去清华镜像把hadoop下载下来
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/core/stable/hadoop-3.3.6.tar.gz
解压+重命名
tar -zxvf /opt/tools/hadoop-3.3.6.tar.gz -C /opt/module
#在module目录下
mv hadoop-3.3.6 hadoop3
配置环境变量,就是vi /etc/profile
之后,将以下内容复制一下
export HADOOP_HOME=/opt/module/hadoop3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
然后使用source /etc/profile
让环境起效
使用`hadoop version看看是否成功
Hadoop 3.3.6
配置hadoop
【在master上操作】
进入hadoop配置所在的目录
cd /opt/module/hadoop3/etc/hadoop
修改hadoop-env.sh文件中的JAVA_HOME。在vim中,输入/export JAVA_HOME
,找到该配置所在的行,修改成我们的JAVA_HOME
vi hadoop-env.sh
export JAVA_HOME=/opt/module/java8
同样的,配置core-site.xml如下
<configuration>
<!--用于设置Hadoop的文件系统,由URI指定-->
<property>
<name>fs.defaultFS</name>
<!--用于指定namenode地址master机器上-->
<value>hdfs://master:9000</value>
</property>
<!--配置Hadoop的临时目录,默认/tem/hadoop-${user.name}-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop3/tmp</value>
</property>
</configuration>
`
配置hdfs-site.xml如下
<configuration>
<!--指定HDFS的数量-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--secondary namenode 所在主机的IP和端口-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
</configuration>
配置mapred-site.xml如下
<configuration>
<!--指定MapReduce运行时的框架,这里指定在YARN上,默认在local-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置yarn-site.xml如下
<configuration>
<!--指定YARN集群的管理者(ResourceManager)的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
防止hadoop启动报错:Attempting to operate on hdfs namenode as root。在以下脚本文件的开头加入指定内容
首先进入cd /opt/module/hadoop3/sbin
在start-dfs.sh,stop-dfs.sh两个文件顶部添加
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
在start-yarn.sh,stop-yarn.sh两个文件顶部添加
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
最后修改环境变量:vim /etc/profile
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
配置workers如下:注意进去后先输入dd
将第一行删掉
master
slave1
slave2
向slave1\2分发配置
【在master上操作】将/opt/module
整个复制到slave1/2上去
scp -r /opt/module slave1:/opt/
scp -r /opt/module slave2:/opt/
【在master上操作】将/etc/profile
文件复制到slave1/2上去
scp /etc/profile slave1:/etc/profile
scp /etc/profile slave2:/etc/profile
【在slave1/2中分别执行】让配置起效
source /etc/profile
测试hadoop
【在master上操作】在主节点格式化文件系统
hdfs namenode -format
【在master上操作】hadoop,启动!!!
start-all.sh
等待其启动,如果期间不报错,且在浏览器打开
192.168.80.100:9870
192.168.80.100:8088
显示正常,则成功
配置zookeeper
安装zookeeper
【在master中操作】
首先到清华镜像给zookeeper下载下来,解压到我们的/opt/module
,并重命名成zookeeper3
cd /opt/tools
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.8.2-bin.tar.gz
tar -zxvf /opt/tools/apache-zookeeper-3.8.2-bin.tar.gz -C /opt/module
mv apache-zookeeper-3.8.2-bin zookeeper3
配置环境变量(打开和最后的source不再赘述)
export ZOOKEEPER_HOME=/opt/module/zookeeper3
export PATH=$PATH:$ZOOKEEPER_HOME/bin
进入cd /opt/module/zookeeper3/conf
来进行配置
先将sample复制一下
cp zoo_sample.cfg zoo.cfg
然后对其进行修改vi zoo.cfg
#输入 /dataDir 在文件中找到该行,改成下面这样
dataDir=/opt/module/zookeeper3/data
#在最后加入
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
在我们的/opt/module/zookeeper3/
下创建这个data目录并进入
mkdir /opt/module/zookeeper3/data
cd /opt/module/zookeeper3/data
创建一个myid文件,在里面输入1
echo "1">>myid
分发zookeeper配置
【在master上进行操作】将我们的/opt/module/zookeeper3
分发到剩下的两台机器上
scp -r /opt/module/zookeeper3 slave1:/opt/module
scp -r /opt/module/zookeeper3 slave2:/opt/module
【分别在slave1/2上进行操作】 将myid中的内容更改为2/3
cd /opt/module/zookeeper3/data
rm myid
echo "2">>myid
#在 slave2 中就是 echo "3">>myid
【在master上操作】 分发环境配置
scp /etc/profile slave1:/etc/profile
scp /etc/profile slave2:/etc/profile
【在slave1/2上分别操作】 让环境起效
source /etc/profile
测试zookeeper
【在每台机器上逐一进行操作】
打开三台zookeeper
zkServer.sh start
出现zkServer.sh start
后继续下一步
继续查看状态
zkServer.sh status
出现Mode: follower
或者Mode: leader
说明已成功
配置hbase
安装hbase
【在master上进行】
首先到清华镜像给hbase下载下来,解压到我们的/opt/module,并重命名成hbase2
cd /opt/tools
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/hbase-2.5.5-hadoop3-bin.tar.gz
tar -zxvf /opt/tools/hbase-2.5.5-hadoop3-bin.tar.gz -C /opt/module
mv hbase-2.5.5-hadoop3 hbase2
配置环境变量
export HBASE_HOME=/opt/module/hbase2
export PATH=$PATH:$HBASE/bin
进入cd /opt/hbase2/conf
下修改配置文件
首先是hbase-env.sh
#输入 /JAVA_HOME 找到行修改
export JAVA_HOME=/opt/module/java8
#输入 /HBASE_MANAGES_ZK 找到行修改
export HBASE_MANAGES_ZK=false
在hbase-site.xml下添加:
<configuration>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
<description>The directory shared by RegionServers.</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/module/hbase2/zookeeperdata</value>
<description>Property from ZooKeeper config zoo. cfg.The directory where the snapshot is stored.</description>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/opt/module/hbase2/tmpdata</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
<description>The directory shared by RegionServers.</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster will be in. Possible values are false:standalone and pseudo-distributed setups with managed Zookeeper true: fully distributed with unmanaged Zookeeper Quorum (see hbase-env. sh)</description>
</property>
<property>
<name>hbase.wal.provider</name>
<value>filesystem</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
进入文件vim regionservers
,先输入dd将第一行删掉,然后加入
master
slave1
slave2
分发hbase配置
【在master上进行操作】将我们的/opt/module/hbase2
分发到剩下的两台机器上
scp -r /opt/module/hbase2 slave1:/opt/module
scp -r /opt/module/hbase2 slave2:/opt/module
【在master上操作】 分发环境配置
scp /etc/profile slave1:/etc/profile
scp /etc/profile slave2:/etc/profile
【在slave1/2上分别操作】 让环境起效
source /etc/profile
测试hbase
按照以下步骤逐步启动
【在master中操作】启动hadoop
start-all.sh
【三台机器都输入】启动zookeeper
zkServer.sh start
【在master操作】 启动hbase
start-hbase.sh
尝试在我们的hbase中创建一个表
先进入shell
hbase shell
创建一个表(下一节会用到)
create 'my_table', 'cf'
如果创建成功,则基本宣告大功告成
最新:本人于该小学期未将选择题答案誊抄到最后一页空白纸,导致挂科,卷子找不回来。希望大火以此为鉴,认真考试。
哈哈!