虚拟机、mysql、hadoop伪分布式、高可用集群
发布日期:2021-05-10 03:44:20 浏览次数:18 分类:技术文章

本文共 15363 字,大约阅读时间需要 51 分钟。

文章目录

虚拟机

安装VMwareWorkStation

按照提示安装,输入秘钥即可

新建虚拟机

1、点击文件-新建虚拟机或直接点击创建新的虚拟机,进入新建虚拟机向导

在这里插入图片描述
2、选择典型-稍后安装操作系统
在这里插入图片描述
在这里插入图片描述
3、客户机操作系统:Linux,版本CentOS 7 64位
在这里插入图片描述
4、选择安装位置
在这里插入图片描述
5、最大磁盘大小,将虚拟磁盘拆分成多个文件选择默认
在这里插入图片描述
6、自定义硬件
(1)内存—推荐4GB
(2)新CD/DVD(IDE)–使用ISO映像文件
高级—虚拟设备节点:SATA(A)
在这里插入图片描述
在这里插入图片描述
(3)网络适配器设置两个
修改网络适配器–仅主机模式
高级–生成mac地址
添加网络适配器–NAT模式
高级–生成mac地址
在这里插入图片描述
7、点击完成,开启此虚拟机,等待运行
8、选择语言,continue
9、设置DATE&TIME:上海
设置NETWORK&HOST NAME:Ethernet33、Ethernet34状态设为on–done
设置INSTALLATION DESTINATION(分区分盘):默认–done
10、设置root初始密码,等待安装完成。

登录虚拟机

1、log in:root password为初始密码

2、配置网络 vi /etc/sysconfig/network-scripts/ifcfg-ens33
查看WindowsIp
在这里插入图片描述

在这里插入图片描述

3、systemctl restart network 重启网络
systemctl stop firewalld 关闭防火墙
systemctl disable firewalld 禁用防火墙
在这里插入图片描述

安装jdk

1、将安装包上传到/root/software下

2、解压到当前文件夹 tar -zxvf jdk-8u221-linux-x64.tar.gz
jdk1.8.0_221是jdk的安装目录
在这里插入图片描述
3、配置环境变量
vi /etc/profile

export JAVA_HOME=/root/software/jdk1.8.0_221export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

source /etc/profile

4、验证安装完成
在这里插入图片描述

安装mysql

1、上传安装包

MySQL-server-5.6.46-1.el7.x86_64.rpm
MySQL-client-5.6.46-1.el7.x86_64.rpm
2、逐次安装
yum -y install perl
rpm -ivh MySQL-client-5.6.46-1.el7.x86_64.rpm
yum install autoconf -y
rpm -e mariadb-libs-1:5.5.60-1.el7_5.x86_64 --nodeps
rpm -ivh MySQL-server-5.6.46-1.el7.x86_64.rpm
2、获取mysql初始密码 /root/.mysql_secret
3、启动mysql service mysql start
4、设置mysql密码
mysql -uroot -p(密码)
set password=password("**");
5、配置文件
/usr/my.cnf

hadoop伪分布式安装

1、上传包

hadoop-native-64-2.6.0.tar
hadoop-2.6.0-cdh5.14.2.tar.gz
2、解压hadoop-2.6.0-cdh5.14.2.tar.gz、修改文件名称为hadoop、删除压缩包
tar -zxvf hadoop-2.6.0-cdh5.14.2.tar.gz
mv hadoop-2.6.0-cdh5.14.2 hadoop
rm -f hadoop-2.6.0-cdh5.14.2.tar.gz
3、cd hadoop查看一下hadoop的目录结构
bin sbin 执行文件
etc 配置文件
examples 示例
include 拓展
lib 依赖包
share 共享
src 源码
4、cd etc/hadoop里面是各种配置文件
1) vi hadoop-env.sh(hadoop和java相关联)
JAVA_HOME的安装目录 在这里插入图片描述
如何快速查找JAVA_HOME的安装目录
如果配置了环境变量 echo $JAVA_HOME
在这里插入图片描述
如果用rpm安装,没有配置环境变量
which java
在这里插入图片描述在这里插入图片描述
2)core-site.xml
1、fs.defaultFS参数配置的是HDFS的地址
可以是主机名、ip地址:9000
2、hadoop.tmp.dir配置的是Hadoop临时目录
3、hosts、groups配置集群时需要配置,表示任意用户、任意组可以使用

fs.defaultFS
hdfs://hadoop100:9000
hadoop.tmp.dir
/root/software/hadoop/tmp
hadoop.proxyuser.root.hosts
*
hadoop.proxyuser.root.groups
*

3)hdfs-site.xml

dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1。

dfs.replication
1

4)检查免密登录

1、修改主机的名称
hostnamectl set-hostname hadoop101(主机名)
2、添加地址和主机名
vi /etc/hosts
3、生成秘钥(私钥和公钥) ssh-keygen -t rsa -P “”
ssh-keygen生成,管理和转换认证密钥
-t 创建秘钥的类型
rsa 秘钥类型
-P 提供(旧)密码短语
4、自己保存秘钥 cat .ssh/id_rsa.pub > .ssh/authorized_keys
在这里插入图片描述
5)在yarn上执行 mapreduce
mapred-site.xml.template改为mapred-site.xml

mapreduce.framework.name
yarn

6) 配置yarn

yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.hostname
hadoop100

7)配置hadoop环境变量

/etc/profile
第一行 HADOOP_HOME=hadoop的安装目录
最后一行 如果用rpm安装的java
那么直接复制最后一行
如果配置了java环境变量
将$HADOOP_HOME/bin:$HADOOP_HOME/sbin添加到PATH中,位于$PATH前

export JAVA_HOME=/root/software/jdk1.8.0_221export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binexport HADOOP_HOME=/root/software/hadoopexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH

用rpm安装的环境变量

前一个path初始化
source /etc/profile

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binexport HADOOP_HOME=/root/software/hadoopexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

8)修改slaves文件 因为此时datanode是自己

将localhost 改为 主机名 hadoop20
9)hdfs namenode –format
格式化是对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中
10)cd /root/software/hadoop 执行 start-all.sh
11)jps命令查看是否已经启动成功

问题:

– process information unavailable
删除 rm -rf hsperfdata_*
重启

配置hadoop集群

新建虚拟机设置静态IP关闭防火墙

新建虚拟机,关机,导出为ovf文件

文件-打开-ovf文件-设置虚拟机名称和存储路径-导入
分别修改ip地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
ONBOOT=yes
最下面加一条IPADDR=192.168.232.XX(2-255)
重启网络
systemctl restart network
关闭防火墙:
systemctl stop firewalld
systmectl disable firewalld

建立互信

连接mobaxterm

修改主机名
hostnamectl set-hostname hadoop20
hostnamectl set-hostname hadoop21
hostnamectl set-hostname hadoop22
添加各个主机的地址和主机名 vi /etc/hosts
在这里插入图片描述
3、生成秘钥(私钥和公钥) ssh-keygen -t rsa -P “”
ssh-keygen生成,管理和转换认证密钥
-t 创建秘钥的类型
rsa 秘钥类型
-P 提供(旧)密码短语
4、自己保存秘钥 cat .ssh/id_rsa.pub > .ssh/authorized_keys
5、把秘钥传输给其他机器 ssh-copy-id -i .ssh/id_rsa.pub -p22 root@hadoop101(root用户@其他主机名)
ssh-copy-id -i id_rsa.pub -p22 root@hadoop21
在这里插入图片描述
将Hadoop21中的authorized_keys文件分发给hadoop20、Hadoop2
scp authorized_keys root@hadoop22:/root/.ssh/authorized_keys
scp authorized_keys root@hadoop20:/root/.ssh/authorized_keys
6、测试连接
ssh hadoop22
在这里插入图片描述

配置集群

准备三台虚拟机

集群部署规划
hadoop20:HDFS NameNode DataNode
YARN NodeManager ResourceManager
hadoop21:HDFS DataNode SecondaryNameNode
YARN NodeManager
hadoop22:HDFS DataNode
YARN NodeManager

1、配置jdk

在hadoop20上先配置jdk,然后分发给其他
解压:tar -zxf jdk-8u221-linux-x64.tar.gz
配置环境变量:
vi /etc/profile

export JAVA_HOME=/root/software/jdk1.8.0_221export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

source /etc/profile

将配置好的文件传给Hadoop21、hadoop22
scp -r jdk1.8.0_221/ root@hadoop21:/root/software/
scp -r jdk1.8.0_221/ root@hadoop22:/root/software/
scp -r /etc/profile root@hadoop21:/etc/profile
scp -r /etc/profile root@hadoop22:/etc/profile
别忘记source /etc/profile

2、配置hadoop

在hadoop20上先配置jdk,然后分发给其他机器
tar -zxf hadoop-2.6.0-cdh5.14.2.tar.gz
mv hadoop-2.6.0-cdh5.14.2 hadoop
cd hadoop/etc/hadoop
1)vi hadoop-env.sh hadoop和java相关联
java安装路径 /root/software/jdk1.8.0_221
2)core-site.xml
1、fs.defaultFS参数配置的是HDFS的地址
可以是主机名、ip地址:9000
2、hadoop.tmp.dir配置的是Hadoop临时目录
3、hosts、groups配置集群时需要配置,表示任意用户、任意组可以使用

fs.defaultFS
hdfs://hadoop20:9000
hadoop.tmp.dir
/root/software/hadoop/tmp
hadoop.proxyuser.root.hosts
*
hadoop.proxyuser.root.groups
*

3)hdfs-site.xml中dfs.replication的数量为3

指定dfs.namenode.secondary.http-address地址为hadoop21:50090

dfs.replication
3
dfs.namenode.secondary.http-address
hadoop21:50090

4)在yarn上执行 mapreduce

mapred-site.xml.template改为mapred-site.xml

mapreduce.framework.name
yarn

5) 配置yarn

yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.hostname
hadoop20

6)slaves中分别加入hadoop20 hadoop21 hadoop22

hadoop20
hadoop21
hadoop22
7)配置环境变量

export JAVA_HOME=/root/software/jdk1.8.0_221export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binexport HADOOP_HOME=/root/software/hadoopexport HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport YARN_HOME=$HADOOP_HOMEexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH

将hadoop文件夹和profile文件分发给其他机器

scp -r hadoop root@hadoop21:/root/software
scp -r hadoop root@hadoop22:/root/software
scp -r /etc/profile root@hadoop21:/etc/profile
scp -r /etc/profile root@hadoop22:/etc/profile
8将安装目录hadoop下的logs tmp 文件删除
9namenode格式化(只在hadoop20上格式化)
hadoop namenode -format
10namenode上在安装目录下执行start-all.sh(只在hadoop20上启动)
11查看jps
在这里插入图片描述

同步时间

一:NTP(network time protocol)是网络时间同步协议,就是用来同步网络中各个计算机的时间的协议。

二:NTP服务端配置
1.检查系统是否安装了NTP包(linux系统一般自带NTP4.2),没有安装我们直接使用yum命令在线安装: yum install ntp -y
2.NTP服务端配置文件编辑: vim /etc/ntp.conf
1)修改所有节点
restrict 本机IP mask 255.255.255.0 nomodify notrap
格式:restrict [ 客户端IP ] mask [ IP掩码 ] [参数]
允许client连接到这台服务器同步时间.但是拒绝让他们修改服务器上的时间
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时
2)选择一个主节点
在server部分添加一下部分,并注释掉server 0 ~ n
server 127.127.1.0 以本机时间作为时间服务
Fudge 127.127.1.0 stratum 10
3)主节点以外
在server部分添加如下语句,将server指向主节点。
server 主节点IP 指名上层NTP服务器
Fudge 主节点IP stratum 10

如图

主节点配置
restrict 192.168.232.211 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
Fudge 127.127.1.0 stratum 10
在这里插入图片描述
其他节点
server 192.168.232.20 profer
在这里插入图片描述
执行命令
service ntpd start
ntpstat #查看是否同步,这个过程可能要等一段时间
在这里插入图片描述
date #查看所有机器时间是否相同
在这里插入图片描述

zookeeper

开源的分布式的协调服务,是Google的Chubby一个开源的实现,它是一个为分布式应用提供一致性服务的软件

ZooKeeper集群搭建
1、解压 zookeeper-3.4.6.tar.gz并重命名为zkpr
tar -zxf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6 zkpr
2、将zoo_sample.cfg改为zoo.cfg,修改配置
mv zoo_sample.cfg zoo.cfg
Zookeeper的配置文件存放在主目录下的conf目录中,文件名为zoo.cfg
vi zoo.cfg
1)tickTime:默认值为3000,单位是毫秒,不支持以系统属性方式配置。tickTime用于配置Zookeeper中最小时间单元的长度,很多运行时的时间间隔都是使用tickTime的倍数来表示的。
2) initLimit:默认值为10,表示是tickTime的10倍,必须配置,并且是正整数,不支持以系统属性方式配置,用于配置Leader服务器等待Follower启动,并完成数据同步的时间。
3) syncLimit:默认值为5,表示是tickTime的5倍,必须配置,并且是正整数,不支持以系统属性方式配置,用于配置Leader服务器和Follower之间进行心跳检测的最大延时时间,在Zookeeper运行期间,Leader服务器会与所有的Follower进行心跳检测来确定该服务器是否存活。如果在syncLimit时间内无法获取到Follower的心跳检测响应,就认为Follower已经脱离了和自己的同步。在网络环境较差时,可以适当调大这个参数。
4)dataDir:无默认值,不支持以系统属性方式配置,用于配置Zookeeper服务器存储快照文件的目录。默认情况下,如果没有配置dataLogDir,那么事务日志也会存储到该目录中。
dataDir=/root/software/zkpr/zkData
5)clientPort:无默认值,不支持以系统属性方式配置,用于配置服务器对外的服务端口。客户端通过此端口和Zookeeper服务器创建连接,通常设置为2181。每台服务器可以使用不同的端口,并且集群中的所有服务器也不需要保持此端口一致。
6)添加一下内容
server.0=hadoop20:2287:3387
server.1=hadoop21:2287:3387
server.2=hadoop22:2287:3387
3、将zkpr目录分发给其他机器
scp -r zkpr root@hadoop21:/root/software/
scp -r zkpr root@hadoop22:/root/software/
4、在zookeeper的各个机器中分别创建myid文件(/root/software/zkpr/zkData ),内容分别为0 1 2
5、启动zookeeper服务
zkpr/bin/zkServer.sh start
角色是随机的
在这里插入图片描述

高可用集群

hdfsHA

配置高可用前,先将配置好的hadoop集群关闭

1、core-site.xml

fs.defaultFS
hdfs://hadoopHA
hadoop.tmp.dir
/root/software/hadoop/tmp
hadoop.proxyuser.root.hosts
*
hadoop.proxyuser.root.groups
*
ha.zookeeper.quorum
hadoop20:2181,hadoop21:2181,hadoop22:2181

2、hdfs-site.xml

dfs.nameservices
hadoopHA
dfs.ha.namenodes.hadoopHA
nn1,nn2
dfs.namenode.rpc-address.hadoopHA.nn1
hadoop20:9000
dfs.namenode.http-address.hadoopHA.nn1
hadoop20:50070
dfs.namenode.rpc-address.hadoopHA.nn2
hadoop22:9000
dfs.namenode.http-address.hadoopHA.nn2
hadoop22:50070
dfs.namenode.shared.edits.dir
qjournal://hadoop20:8485;hadoop21:8485;hadoop22:8485/hadoopHA
dfs.journalnode.edits.dir
/root/software/hadoop/data/jn
dfs.ha.automatic-failover.enabled
true
dfs.client.failover.proxy.provider.hadoopHA
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfenceshell(/bin/true)
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa
dfs.ha.fencing.ssh.connect-timeout
30000

3、分发给其他节点

scp core-site.xml root@hadoop21:/root/software/hadoop/etc/hadoop/core-site.xml
scp core-site.xml root@hadoop22:/root/software/hadoop/etc/hadoop/core-site.xml
scp hdfs-site.xml root@hadoop22:/root/software/hadoop/etc/hadoop/hdfs-site.xml
scp hdfs-site.xml root@hadoop21:/root/software/hadoop/etc/hadoop/hdfs-site.xml
4、启动hdfs-HA集群
1)在各个 JournalNode 节点上,输入以下命令启动 journalnode 服务:
hadoop20、hadoop22

$HADOOP_HOME/sbin/hadoop-daemon.sh start journalnode

在这里插入图片描述

2)将各个节点上的logs和tmp删掉

3)在[nn1]上,对其进行格式化

$HADOOP_HOME/bin/hdfs namenode -format  此时hadoop20是nn1

4)将生成的tmp文件发送给nn2,就是hadoop22

scp -r tmp root@hadoop22:/root/software/hadoop/
5)启动nn1 nn2 namenode

$HADOOP_HOME/sbin/hadoop-daemon.sh start namenode

6)查看 web 页面显示

此时都是standby状态
在这里插入图片描述
5、hdfs自动故障转移
1)关闭所有 HDFS 服务: $HADOOP_HOME/sbin/stop-dfs.sh
2)启动 Zookeeper 集群: 每台服务器启动
zkpr/bin/zkServer.sh start
3)初始化 HA 在 Zookeeper 中状态:主节点
$HADOOP_HOME/bin/hdfs zkfc -formatZK
4)启动 HDFS 服务:主节点
$HADOOP_HOME/sbin/start-dfs.sh
5)在各个 NameNode 节点上启动 DFSZK Failover Controller,先在哪台机器 启动,哪个机器的 NameNode 就是 Active NameNode $HADOOP_HOME/sbin/hadoop-daemon.sh start zkfc
6)验证 (1)将 Active NameNode 进程 kill kill -9 namenode 的进程 id (2)将 Active NameNode 机器断开网络 service network stop
(3)查看standby是否转换成active
在这里插入图片描述
在这里插入图片描述
kill之后
在这里插入图片描述
在这里插入图片描述

yarnHA

yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.cluster-id
cluster-yarn1
yarn.resourcemanager.ha.rm-ids
rm1,rm2
yarn.resourcemanager.hostname.rm1
hadoop20
yarn.resourcemanager.hostname.rm2
hadoop22
yarn.resourcemanager.zk-address
hadoop20:2181,hadoop21:2181,hadoop22:2181
yarn.resourcemanager.recovery.enabled
true
yarn.resourcemanager.store.class
org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore

1、分发给其他节点

scp yarn-site.xml root@hadoop21:/root/software/hadoop/etc/hadoop/yarn-site.xml
scp yarn-site.xml root@hadoop22:/root/software/hadoop/etc/hadoop/yarn-site.xml
2、启动yarn
主节点执行:

$HADOOP_HOME/sbin/start-yarn.sh

此时只有主节点的resourcemanager是启动的

另一个节点

$HADOOP_HOME/sbin/yarn-daemon.sh start resourcemanager

此时另外一个手动启动了

查看服务状态

$HADOOP_HOME/bin/yarn rmadmin -getServiceState rm1

网页无法显示:

C:\Windows\System32\drivers\etc 添加hosts
在这里插入图片描述
在这里插入图片描述
start-all.sh之后启动,需要手动启动第二个resourcemanager

转载地址:https://blog.csdn.net/qzc_root/article/details/113866672 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mysql-1
下一篇:多线程

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年08月30日 17时31分07秒