CentOS 7 + Hadoop2.7.7 + Hbase2.1.3 + Hive2.3.4搭建伪分布式集群

Posted by 冷眼樵夫 on 03-08,2019

1、准备linux主机环境

一、安装虚拟机

下载地址:
VMware workstation 15 Pro (附:许可证秘钥)
链接:https://pan.baidu.com/s/1I8wub6e_VzhQHU7ewi7oBA
提取码:8kpr

系统iso:CentOS7 Minimal

基本上就是下一步下一步这种简单的默认安装就好了。除了在安装过程中配置分区的时候可能需要手动分区,然后选择标准分区即可。
装好后,修改内存,因为不需要图形界面,所以只给个512M内存也没问题。并更改网络适配器为VMnet8(NAT)。
file

file
(CentOS和Windows这两台机子通过虚拟网关互联,虚拟网关由VMware workstation生成,在Windows上会生成一个虚拟网卡VMnet8,这个网卡地址和本机的物理网卡没有关系)

如果出现:
1、VMware workstation中Ubuntu16.04不能最大化屏幕问题。
2、VMware workstation与主机相互复制粘贴、文件拖拽问题
$ yum install open-vm-tools
关闭虚拟机VMware workstation,重启即可。

二、网络配置

在VMware workstation的菜单 编辑 -> 虚拟网络编辑器 可以查看和修改虚拟网关地址。
file
然后打开控制面板的网络连接查看VMnet8的IP地址。
file
如图,在我这台机子上:

虚拟网关地址:192.168.224.1
VMnet8 IP地址:192.168.224.128

运行虚拟机,进行网络配置:
1.输入 ip addr 看到我的网卡叫做eno16777736
2.输入 ls /etc/sysconfig/network-scripts/ 看到网卡ip信息的配置文件名叫做ifcfg-eno16777736
file
3.输入 cat /etc/sysconfig/network-scripts/ifcfg-eno16777736 查看,可以发现虽然BOOTPROTO=dhcp,但是ONBOOT=no
(下面4-6步纯属实验性质可忽视,直接开始第7步)
4.输入 vi /etc/sysconfig/network-scripts/ifcfg-eno16777736 将ONBOOT=no修改为yes,在此之前要先进入root模式chmod 777 文件名把文件改为可写状态。修改完毕后,cat一下看看:
file
5.输入 shutdown -r now 重启系统
6.重启完成后,ip addr 看到分配到的地址是192.168.224.128
file

下面开始进行固定ip的设置。
7.输入vi /etc/sysconfig/network-scripts/ifcfg-eno16777736,用#将BOOTPROTO=dhcp注释,并输入以下参数,把ip地址固定写为192.168.224.128

BOOTPROTO=none
IPADDR0=192.168.224.128
PREFIX0=24
GATEWAY0=192.168.224.1
DNS1=192.168.224.1
file
(后来看到有BOOTPROTO=dhcp这行不注释而是改为BOOTPROTO=static,以及多配置一行NETMASK=255.255.255.0而没有DNS那行的,似乎也可以)
改正,发现还是有点问题:调整之后才通,
file
然后编辑/etc/resolv.conf:
file
8.重启网络服务
service network restart
9.验证一下
虚拟机ping www.baidu.com
file
主机ping虚拟机
file

三、修改主机名

通过xshell连接:
修改主机名方便集群间的访问

vi /etc/sysconfig/network
假设我给它起名字叫master,则输入
NETWORKING=yes
HOSTNAME=master

修改域名解析映射文件使得后续可以直接通过主机名访问,vi /etc/hosts,添加一行:IP地址 主机名
file
PING一波试试是否已生效
file

四、文件上传下载

root 账号登陆后执行以下命令:
yum install -y lrzsz
2.用说明
sz命令发送文件到本地:

#sz filename
rz命令本地上传文件到服务器:

#rz
执行该命令后,在弹出框中选择要上传的文件即可。

到此为止linux主机环境已完成。

安装jdk

一、下载解压

在主目录~下新建一个文件夹来放之后要装的所有文件比如叫做app mkdir app
从官网下载jdk包,我下载的是 jdk-8u161-linux-x64.tar.gz
使用上一步配置rz命令
rz -b -y
file
把刚刚的压缩包解压到这个目录下 tar -zxvf jdk-8u161-linux-x64.tar.gz -C ~/app/ (后面那个参数是由于我拖拽的时候把原压缩包放到/usr/java文件夹了所以用 -C 把它解压到指定文件夹下)

进入 app/jdk1.8.0_181/bin 目录下,./java -version 看是否成功安装
file
file

二、配置环境变量PATH

vi /etc/profile
在最末尾处添加两行
export JAVA_HOME=/app/jdk1.8.0_181
export PATH=$PATH:$JAVA_HOME/bin
(JAVA_HOME变量的值可能因人而异,不过可以进入解压的jdk目录,然后输入pwd,然后选中这串东西贴过来)
配置好了之后我们想要使它立刻生效,输入 source /etc/profile,然后输入 java -version看到能够使用。这样就已经配置好了。
file

启动 ssh 无密登录

开启公钥、私钥验证

sudo vi /etc/ssh/sshd_config
RSAAuthentication yes #开启私钥验证
PubkeyAuthentication yes #开启公钥验证
将集群master修改后的 /etc/ssh/sshd_config 通过 scp 命令复制发送到集群的每一个节点
scp -r /etc/ssh/sshd_config root@slave01:/etc/ssh/sshd_config
scp -r /etc/ssh/sshd_config root@slave02:/etc/ssh/sshd_config

生成公钥、私钥

在集群的每一个节点输入命令 ssh-keygen -t rsa -P ‘’,生成 key,一律回车

ssh-keygen -t rsa -P ''
cd .ssh/
touch authorized_keys
chmod 600 authorized_keys
file

将集群每一个节点的公钥id_rsa.pub放入到自己的认证文件中authorized_keys

cat id_rsa.pub >> authorized_keys

将自己的认证文件 authorized_keys 通过 scp 命令复制发送到每一个节点上去

scp -r /root/.ssh/authorized_keys root@slave01:/root/.ssh/authorized_keys
scp -r /root/.ssh/authorized_keys root@slave02:/root/.ssh/authorized_keys

另一种操作:(远程复制发送内容到每一个节点)
cat ~/.ssh/id_rsa.pub | ssh ytdops@10.200.3.101 'cat - >> ~/.ssh/authorized_keys'

在集群的每一个节点重启sshd

sudo systemctl restart sshd.service

验证 ssh 无密登录

例如:在master

ssh root@centos-02

安装 Hadoop

版本选择

考虑到后续需要集成hbase、hive、sqoop等项目,我们选择hadoop2.7.7
file
在master节点操作:

cd /app/
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
tar -zxvf hadoop-2.7.7.tar.gz

环境变量

如果是对所有的用户都生效就修改vi /etc/profile 文件 如果只针对当前用户生效就修改 vi ~/.bahsrc 文件

vi /etc/profile
export PATH=${HADOOP_HOME}/bin:$PATH
export HADOOP_HOME=/app/hadoop-2.7.7/
:wq 保存
source /etc/profile 生效
效果图:
file

配置Hadoop

hadoop-env

cd /home/hadoop-2.7.7/etc/hadoop/
vi hadoop-env.sh (找到 JAVA_HOME 改为 JDK 的安装目录)
export JAVA_HOME=/app/jdk1.8.0_181

效果图:
file

core-site.xml

vi core-site.xml



fs.defaultFS
hdfs://master:9000


hadoop.tmp.dir
file:/app/hadoop-2.7.7/tmp

效果图:
file

hdfs-site.xml

vi hdfs-site.xml



dfs.namenode.secondary.http-address
master:50090


dfs.replication
2


dfs.namenode.name.dir
file:/app/hadoop-2.7.7/tmp/dfs/name


dfs.datanode.data.dir
file:/app/hadoop-2.7.7/tmp/dfs/data

效果图:
file

mapred-site.xml

cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml


mapreduce.framework.name
yarn


mapreduce.jobhistory.address
master:10020


mapreduce.jobhistory.webapp.address
master:19888

效果图:
file

yarn-site.xml

vi yarn-site.xml


yarn.resourcemanager.hostname
master


yarn.nodemanager.aux-services
mapreduce_shuffle

效果图:
file

将 hadoop-2.7.7 文件夹重打包后复制到其他slave01,slave02子节点。

scp -r /home/hadoop-2.7.7 root@slave01:/home/hadoop-2.7.7
scp -r /home/hadoop-2.7.7 root@slave02:/home/hadoop-2.7.7

salve配置文件

vi hadoop-2.7.7/etc/hadoop/slaves
file

启动 hadoop

格式化节点

格式化namenode和datanode并启动,(在主节点master上执行就可以了 不需要在其他子节点上执行)

cd /home/hadoop-2.7.7/bin
./hadoop namenode -format
./hadoop datanode -format(可不执行)

启动 hadoop

systemctl stop firewalld.service 关闭防火墙

cd /home/hadoop-2.7.7/sbin
./start-dfs.sh
./start-yarn.sh
./mr-jobhistory-daemon.sh start historyserver
或者
./start-all.sh
./mr-jobhistory-daemon.sh start historyserver

查看进程服务

master:
file
slave01:
file
slave02:
file

访问master

http://192.168.224.130:50070/dfshealth.html#tab-overview
file
file

HBase安装部署

版本选择

根据hadoop版本选择, 我们选择的hbase版本是2.1.3,下载地址:
https://hbase.apache.org/downloads.html

环境变量

vim /etc/profile
export HBASE_HOME=/app/hbase-2.1.3
export PATH=$HBASE_HOME/bin:$PATH

效果图:
file

vim /opt/hbase-1.2.6/conf/hbase-env.sh
export JAVA_HOME=/app/jdk1.8.0_181(jdk安装路径)
去掉注释 # export HBASE_MANAGES_ZK=true,使用hbase自带zookeeper

配置文件

vi hbase-site.xml


  
hbase.rootdir
hdfs://master:9000/app/hbase2.1.3/hbase_db

  

  
   hbase.cluster.distributed
   true
  

  
   hbase.zookeeper.quorum
   master,slave01,slave02
  
   

   hbase.zookeeper.property.dataDir
   /app/hbase2.1.3/zookeeper
  

 

效果图:
file

vim /app/hbase2.1.3/conf/regionservers
去掉默认的localhost
加入slave1、slave2,保存退出

效果图:
file

然后把在master上配置好的hbase,通过远程复制命令
scp -r /opt/hbase-1.2.6 192.168.172.72/73:/opt/hbase-1.2.6
复制到slave1、slave2对应的位置

启动与停止

(1)在Hadoop已经启动成功的基础上,输入start-hbase.sh,过几秒钟便启动完成,
输入jps命令查看进程是否启动成功,若 master上出现HMaster、HQuormPeer,
  slave上出现HRegionServer、HQuorumPeer,就是启动成功了。
(2)输入hbase shell 命令 进入hbase命令模式
  输入status命令可以看到如下内容,1个master,2 servers,3机器全部成功启动。
  1 active master, 0 backup masters, 2 servers, 0 dead, 2.0000 average load
(3)接下来配置本地hosts,(前边配置过的无需再配置了)
   编辑 C:\Windows\System32\drivers\etc的hosts文件,加入
  192.168.224.130 master
  192.168.224.131 slave01
  192.168.224.132 slave02
  在浏览器中输入http://master:16010就可以在界面上看到hbase的配置了
效果图:
file
(4)当要停止hbase时输入stop-hbase.sh,过几秒后hbase就会被停止了。

Hive安装部署

版本选择

根据hadoop版本选择, 我们选择的hive版本是2.3.4,下载地址:
https://hive.apache.org/downloads.html

环境变量

vim /etc/profile
export HIVE_HOME=/app/apache-hive-2.3.4-bin
export PATH=$HIVE_HOME/bin:$PATH

效果图:
file

配置文件

1:打开conf,准备配置文件

cp hive-env.sh.template hive-env.sh
修改HADOOP_HOME:
HADOOP_HOME=/app/hadoop-2.7.7

cp hive-default.xml.template hive-site.xml
cp hive-log4j2.properties.template hive-log4j2.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

2:修改/app/apache-hive-2.3.4-bin/conf/hive-site.xml,

(把其中的${system:java.io.tmpdir}都修改成/app/apache-hive-2.3.4-bin/tmp,你也可以自己设置成自己的tmp目录)
(把${system:user.name}都换成用户名,为这里替换成了root)

3:初始化元数据数据库

(默认保存在本地的derby数据库,也可以配置成mysql),注意,不要先执行hive命令,否则这一步会出错,(注意下面的命令是在/app/apache-hive-2.3.4-bin目录下执行)
file

4:成功之后我们可以以客户端形式直接启动hive,如:

file

5:试着创建个数据库是否可以

file

6:这时候,还是单机版。需要启动server。

启动之前,先把端口改一下。
修改/app/apache-hive-2.3.4-bin/conf/hive-site.xml文件

hive.server2.thrift.port
10000
改成

hive.server2.thrift.port
8338

7:然后启动命令:

file
这时可以通过jdbc客户端连接这个服务访问hive,端口是8338.


0评论