安装JDK
1、安装JDK
vi /etc/profile
#解压后添加如下内容,然后关闭shell,重新打开一个新shell
export JAVA_HOME=/usr/java/jdk1.8.0_261
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
配置SSH免密登录
1、确认系统已经安装了 SSH
rpm -qa | grep openssh
rpm -qa | grep rsync
出现如下信息,则已经安装了SSH
如果没有安装 ssh 和 rsync,则通过下面的命令安装
yum install ssh 安装SSH协议
yum install rsync (rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件)
service sshd restart 启动服务
master 机器上生成 秘钥对
ssh-keygen -t rsa
拷贝和权限
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
注意:在slave1机创建目录
#root登录后
mkdir .ssh
复制公钥到slave1机、slave2机(此处[email protected] ,root是slave1的登录用户名,192.168.95.133是这台机子的Ip)
scp .ssh/authorized_keys root@192.168.95.133:~/.ssh/authorized_keys
scp .ssh/authorized_keys root@192.168.95.134:~/.ssh/authorized_keys
可以测试一下:
#ssh 192.168.95.133
#exit
ssh 192.168.95.134
exit
修改主机名
vi /etc/hosts
127.0.0.1 localhost
192.168.95.132 master
192.168.95.133 slave1
192.168.95.134 slave2
复制这个配置到slave1和slave2机器(当前由于slave1机器还没有上一步的操作,只能用ip名复制)
scp -r /etc/hosts root@192.168.95.133:/etc/hosts
scp -r /etc/hosts root@192.168.95.134:/etc/hosts
Hadoop安装
1、下载Hadoop
Hadoop下载地址
解压并配置hadoop
cd /opt
tar -zxvf hadoop-3.1.2.tar.gz
配置hadoop的java home
vi /opt/hadoop-3.1.2/etc/hadoop/hadoop-env.sh
JAVA_HOME=/usr/java/jdk1.8.0_261
创建文件目录
mkdir /data
mkdir /data/hdfs
mkdir /data/hdfs/tmp
mkdir /data/hdfs/var
mkdir /data/hdfs/logs
mkdir /data/hdfs/dfs
mkdir /data/hdfs/data
mkdir /data/hdfs/name
mkdir /data/hdfs/checkpoint
mkdir /data/hdfs/edits
cd /opt/hadoop-3.1.2/etc/hadoop
修改 vi core-site.xml
<property>
<name>fs.checkpoint.period</name>
<value>3600</value>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/data/hdfs/tmp</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
cd /opt/hadoop-3.1.2/etc/hadoop
修改vi hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
<description>
The address and the base port where the dfs namenode web ui will listen on.
If the port is 0 then the server will start on a free port.
</description>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/data/hdfs/checkpoint</value>
</property>
<property>
<name>dfs.namenode.checkpoint.edits.dir</name>
<value>/data/hdfs/edits</value>
</property>
cd /opt/hadoop-3.1.2/etc/hadoop
修改vi mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tarcker</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
cd /opt/hadoop-3.1.2/etc/hadoop
修改vi yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandle</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tarcker.address</name>
<value>master:8025</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8040</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
配置workers
cd /opt/hadoop-3.1.2/etc/hadoop
vi workers
slave1
slave2
配置可以使用root用户启动,如果使用非root用户安装的,可以不做此设置
cd /opt/hadoop-3.1.2/sbin
vi start-yarn.sh
vi stop-yarn.sh
在开头空白处添加
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
vi start-dfs.sh
vi stop-dfs.sh
在开头空白处添加
HDFS_DATANODE_USER=root
HADOOP_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
把master上配置好的hadoop复制到slave1机器
scp -r /opt/hadoop-3.1.2 root@slave1:/opt/
scp -r /opt/hadoop-3.1.2 root@slave2:/opt/
格式化hadoop
#先格式化(每台机器都做)
cd /opt/hadoop-3.1.2
bin/hdfs namenode -format
在master启动hadoop
cd /opt/hadoop-3.1.2
sbin/start-all.sh
sbin/stop-all.sh
三台机器均使用以下命令查看
jps
Hive安装
hive仅仅是一个客户端工具,不存在集群概念,因此安装的时候无需每台机器安装,哪个节点需要使用,就安装在哪个节点上。多个节点安装的时候mysql的元数据库一定要相同(即要在同一个mysql同一个库上),否则各个客户端获取的数据不一致
1、下载HIve
Hive下载地址
2、安装mysql
CentOS7安装MySQL8.0图文教程
解压master机器上 解压hive压缩包
cd /opt
tar -zxvf apache-hive-3.1.2-bin.tar.gz
进入到/conf目录,将hive-default.xml.template文件复制一份,并命名为hive-default.xml
新建hive-site.xml内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- ########################### hive的 JDBC连接 ############################ -->
<!-- mysql 连接用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- mysql 连接密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
<!-- mysql 连接URL 如果hive和mysql在同一服务器上,使用localhost -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.95.135:3306/myhive</value>
</property>
<!-- mysql 连接驱动 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
</configuration>
复制hive-env.sh.template修改名称为hive-env.sh,添加如下内容
HADOOP_HOME=/opt/hadoop-3.1.2
export HIVE_CONF_DIR=/opt/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/opt/apache-hive-3.1.2-bin/lib
将mysql驱动包上传至hive的lib包下
初始化
cd /opt/apache-hive-3.1.2-bin/bin
./schematool -dbType mysql -initSchema
启动hive
cd /opt/apache-hive-3.1.2-bin/bin
./hive
hive启动成功后就会出现 hive> 这个符号,我们就可以开始测试hive了
hive> create database test; # 创建test数据库
OK
Time taken: 0.069 seconds
hive> use test; # 进入test数据库
OK
Time taken: 0.068 seconds
hive> create table tt(id int); # 创建表 tt
OK
Time taken: 1.886 seconds
hive> show tables; # 查看test库中所有的表
OK
tt
Time taken: 0.093 seconds, Fetched: 1 row(s)
zookeeper安装:
下载 zookeeper
官网下载地址:http://mirror.bit.edu.cn/apache/zookeeper/
上传下载文件至/opt并解压
#cd /opt
# tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
创建data 目录,在zookeeper 目录下创建data目录,存放数据
#mkdir /opt/apache-zookeeper-3.6.2-bin/data
复制并重命名主配置文件
#cd /opt/apache-zookeeper-3.6.2-bin/conf
#cp zoo_sample.cfg zoo.cfg
配置zoo.cfg 文件
dataDir=/opt/apache-zookeeper-3.6.2-bin/data
server.0=192.168.95.132:2182:2183
server.1=192.168.95.133:2182:2183
server.2=192.168.95.134:2182:2183
上面红色框住的内容即是我们修改的内容:
①、tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime
②、dataDir:存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志。注意:应该谨慎的选择日志存放的位置,使用专用的日志存储设备能够大大提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会很大程度上影像系统性能。
③、client:监听客户端连接的端口。
④、initLimit:允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
⑤、syncLimit:表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
⑥、server.A=B:C:D
A:其中 A 是一个数字,表示这个是服务器的编号;
B:是这个服务器的 ip 地址;
C:Leader选举的端口;
D:Zookeeper服务器之间的通信端口。
我们需要修改的第一个是 dataDir ,在指定的位置处创建好目录。
第二个需要新增的是 server.A=B:C:D 配置,其中 A 对应下面我们即将介绍的myid 文件。B是集群的各个IP地址,C:D 是端口配置。
查看端口是否被占用
#netstat -anp |grep 2181
如果有listen字样则表示被占用
创建 myid 文件
在 上一步 dataDir 指定的目录下,创建 myid 文件
#cd /opt/apache-zookeeper-3.6.2-bin/data
#vi myid
132的文件内容为0
133的文件内容为1
134的文件内容为2
与zoo.cfg中的server数字相对应
复制master上配置好的zookeeper至slave节点
#scp -r /opt/apache-zookeeper-3.6.2-bin root@slave1:/opt/
#scp -r /opt/apache-zookeeper-3.6.2-bin root@slave2:/opt/
到slave服务器修改myid 文件
#vi /opt/apache-zookeeper-3.6.2-bin/data/myid
分别三台机器,启动zookeeper服务
#cd /opt/apache-zookeeper-3.6.2-bin/bin
#./zkServer.sh start 启动
#./zkServer.sh stop 停止
#./zkServer.sh restart 重启
#./zkServer.sh status 查看集群节点状态
hbase安装
hbase和hadoop存在版本依赖关系,所有安装之前请先确定好hbase和hadoop是否支持,具体版本支持关系可以到hbase官方页面上查看: https://hbase.apache.org/book.html#basic.prerequisites, 在页面中搜索: Hadoop version support matrix 即可。
与hadoop3.12匹配的hbase为HBase-2.2.x、HBase-2.3.x
HBASE的下载地址:
https://www.apache.org/dyn/closer.lua/hbase/
hbase安装单机版:
将压缩包复制到/usr/local
#tar -zxvf hbase-2.2.6-bin.tar.gz
3.配置hbase-env.sh,路径/usr/local/hbase-2.2.6/conf
#开启自带zk
export HBASE_MANAGES_ZK=true
#配置JAVA_HOME
export JAVA_HOME=XXX
4.配置hbase-site.xml
hbase.tmp.dir
/usr/local/hbase-2.2.6/hbaseData
hbase.rootdir
file:/usr/local/hbase-2.2.6
创建目录/usr/local/hbase-2.2.6/hbaseData
#mkdir /usr/local/hbase-2.2.6/hbaseData
5.查看主机名(测试环境忽略)
hostname
6.在部署jar包机器上配置host(测试环境忽略)
/etc/hosts--------hbase主服务器 hbase主服务器hostname
7.启动hbase
#cd /usr/local/hbase-2.2.6/bin
#./start-hbase.sh
8.进入hbase–shell
#cd /usr/local/hbase-2.2.6/bin
#./hbase shell
hbase安装集群版:
将文件上传至/opt并解压
#cd /opt
#tar -zxvf hbase-2.2.6-bin.tar.gz
(1)修改hbase-env.sh
修改JAVA_HOME路径 /usr/local/java/jdk1.8.0_211
修改HBASE_MANAGES_ZK的值为false
#export HBASE_MANAGES_ZK=true,如果为true,表示hbase使用自带的zookeeper,这种只适合单机模式
(2)修改hbase-site.xml hbase的核心配置文件
hbase.zookeeper.quorum
master:2181,slave1:2181,slave2:2181
hbase.rootdir
hdfs://master:9000/hbase
hbase.cluster.distributed
true
修改regionservers文件,从节点的主机名
slave1
slave2
修改 backup-masters来指定备用的主节点
#cd /opt/hbase-2.2.6/conf
#vi backup-masters
内容为slave1
复制master上配置好的hbase至slave节点
#scp -r /opt/hbase-2.2.6 root@slave1:/opt/
#scp -r /opt/hbase-2.2.6 root@slave2:/opt/
从master节点启动HBASE
#cd /opt/hbase-2.2.6/bin
#./start-hbase.sh
通过浏览器访问
http://192.168.95.132:16010
参考博客:
Hadoop hdfs完全分布式搭建教程
vmware 10 创建的centos7配置jdk.ssh免密 克隆机器
centos7配置hadoop3.1.2
centOS7搭建hadoop环境(非常详细!非常适合新手!)
CentOS7 Hive 安装
HIve的安装与配置
Hadoop中ssh+IP、ssh+别名免秘钥登录配置
namenode无法启动(namenode格式化失败)
CentOS7+Hadoop-3.2.0+MySQL5.7安装配置Hive-3.1.2
centos7下安装hive-3.1.2安装
CentOS7 Hive 安装
zookeeper 集群搭建
Zookeeper 3.6 集群安装
CentOS7 安装 hbase1.3.3
CentOS7服务器安装ZooKeeper3.6.2集群
centos7下安装HBase2.2.0 单机版本
CentOS7 Hbase 安装(完全分布式)
HBase(03)——HBase集群及集群搭建
Hive与HBase的区别与联系
Hive的概念、原理及其与Hadoop和数据库关系(图文讲解)
hadoop系列-hadoop版本选择