版本说明

当前版本号[20230415]。

版本修改说明20230415初版

​ 前言:

​ 本文已对原文进行改动,包括部署的时候所遇到的问题都已经改善了部分代码,和删减了一些重复的部署内容,尽可能最大程度地将部署过程中问题都解决掉了,让各位通过本文部署的时候可以轻松一点。以下内容为实战部署,各位不必全部部署完成,按需使用。如各位想对比课程原文,可通过以下链接找到原视频网站,通过简介来获取到课程原文。

​ 本课程的笔记已经更新完毕,各位可以通过点击黑马程序员2023年新版Linux零基础快速入门到精通》学习笔记总目录查看所有知识点,同时也能免费下载学习笔记和思维导图。

目录

文章目录

版本说明目录实战篇章MySQL数据库管理系统安装部署简介注意MySQL8.0版本在CentOS系统安装安装配置

Tomcat安装部署简介安装安装JDK环境解压并部署Tomcat

Nginx安装部署简介安装

RabbitMQ安装部署简介安装

Redis安装部署简介安装

ElasticSearch安装部署简介安装

集群化环境前置准备介绍部署配置多台Linux虚拟机准备主机名映射配置SSH免密登录

简介SSH免密配置

配置JDK环境关闭防火墙和SELinux添加快照补充命令 - scp

Zookeeper集群安装部署简介安装

Kafka集群安装部署简介安装测试Kafka能否正常使用

大数据集群(Hadoop生态)安装部署简介前置要求Hadoop集群角色角色和节点分配

安装调整虚拟机内存Zookeeper集群安装部署

详细内容请点击:[Zookeeper集群安装部署](#Zookeeper集群安装部署) 进行跳转Hadoop集群部署验证Hadoop集群运行情况

大数据NoSQL数据库HBase集群部署简介安装

分布式内存计算Spark环境部署注意简介安装

分布式内存计算Flink环境部署注意简介安装

运维监控Zabbix部署简介安装安装前准备 - Mysql安装Zabbix Server 和 Zabbix Agenta. 安装Zabbix yum库b. 安装Zabbix Server、前端、Agentc. 初始化Mysql数据库d. 为Zabbix Server配置数据库e. 配置Zabbix的PHP前端

配置zabbix 前端(WEB UI)

运维监控Grafana部署简介安装部署形式

方式1安装配置说明配置文件注释配置文件路径使用环境变量

开始配置启动

实战篇章

MySQL数据库管理系统安装部署

简介

​ MySQL数据库管理系统(后续简称MySQL),是一款知名的数据库系统,其特点是:轻量、简单、功能丰富。

​ MySQL数据库可谓是软件行业的明星产品,无论是后端开发、大数据、AI、运维、测试等各类岗位,基本上都会和MySQL打交道。

注意

​ MySQL的安装过程中,除了会使用Linux命令外,还会使用到少量的数据库专用的:SQL语句

对于SQL语句我们并未涉及,所以可以跟随教程的内容,复制粘贴即可

MySQL8.0版本在CentOS系统安装

​ 注意:安装操作需要root权限

安装

配置yum仓库 # 更新密钥

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

# 安装Mysql8.x版本 yum库

rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm

使用yum安装MySQL # yum安装Mysql

yum -y install mysql-community-server

安装完成后,启动MySQL并配置开机自启动 systemctl start mysqld # 启动

systemctl enable mysqld # 开机自启

MySQL安装完成后,会自动配置为名称叫做:mysqld 的服务,可以被 systemctl 所管理 检查MySQL的运行状态 systemctl status mysqld

配置

​ 主要修改root密码和允许root远程登录

获取MySQL的初始密码 # 通过grep命令,在/var/log/mysqld.log文件中,过滤temporary password关键字,得到初始密码

grep 'temporary password' /var/log/mysqld.log

登录MySQL数据库系统 # 执行

mysql -uroot -p

# 解释

# -u,登陆的用户,MySQL数据库的管理员用户同Linux一样,是root

# -p,表示使用密码登陆

# 执行完毕后输入刚刚得到的初始密码,即可进入MySQL数据库

修改root密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

#密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc

设置为:ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘Itheima66^’; [扩展]:配置root的简单密码 我们可以给root设置简单密码,如123456. 请注意,此配置仅仅是用于测试环境或学习环境的MySQL,如果是正式使用,请勿设置简单密码 如想设置成简单密码,需执行以下三条语句。 set global validate_password.policy=0; # 密码安全级别低

set global validate_password.length=6; # 密码长度最低6位即可

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

允许root远程登录,并设置远程登录密码 默认情况下,root用户是不运行远程登录的,只允许在MySQL所在的Linux服务器登陆MySQL系统 请注意,允许root远程登录会带来安全风险 # 第一次设置root远程登录,并配置远程密码使用如下SQL命令

create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码!'; -- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc

# 后续修改密码使用如下SQL命令

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';

#如:

create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

退出MySQL控制台页面 # 退出命令

exit

# 或者通过快捷键退出:ctrl + d

检查端口 MySQL默认绑定了3306端口,可以通过端口占用检查MySQL的网络状态 netstat -anp | grep 3306

安装完毕

Tomcat安装部署

简介

​ Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。

​ 简单来说,Tomcat是一个WEB应用程序的托管平台,可以让用户编写的WEB应用程序,被Tomcat所托管,并提供网站服务。

​ 即让用户开发的WEB应用程序,变成可以被访问的网页。

安装

Tomcat的安装非常简单,主要分为2部分:

安装JDK环境解压并安装Tomcat

安装JDK环境

下载JDK软件 https://www.oracle.com/java/technologies/downloads 在页面下方找到: 下载jdk-8u361-linux-x64.tar.gz(截止目前的最新版) 登陆Linux系统,切换到root用户 通过FinalShell,上传下载好的JDK安装包 创建文件夹,用来部署JDK,将JDK和Tomcat都安装部署到:/export/server 内 mkdir -p /export/server

解压缩JDK安装文件(在这里的命令往下走,需自行对照所下载的jdk版本进行修改) tar -zxvf jdk-8u361-linux-x64.tar.gz -C /export/server

配置JDK的软链接 ln -s /export/server/jdk1.8.0_361 /export/server/jdk

配置JAVA_HOME环境变量,以及将$JAVA_HOME/bin文件夹加入PATH环境变量中 # 编辑/etc/profile文件

vim /etc/profile

export JAVA_HOME=/export/server/jdk

export PATH=$PATH:$JAVA_HOME/bin

生效环境变量 source /etc/profile

配置java执行程序的软链接 # 删除系统自带的java程序

rm -f /usr/bin/java

# 软链接我们自己安装的java程序

ln -s /export/server/jdk/bin/java /usr/bin/java

执行验证 java -version

javac -version

解压并部署Tomcat

​ Tomcat建议使用非Root用户安装并启动

​ 可以创建一个用户:tomcat 用以部署

首先,放行tomcat需要使用的8080端口的外部访问权限 CentOS系统默认开启了防火墙,阻止外部网络流量访问系统内部 所以,如果想要Tomcat可以正常使用,需要对Tomcat默认使用的8080端口进行放行 放行有2种操作方式:

关闭防火墙 配置防火墙规则,放行端口 # 以下操作2选一即可

# 方式1:关闭防火墙(建议选择)

systemctl stop firewalld # 关闭防火墙

systemctl disable firewalld # 停止防火墙开机自启

# 方式2:放行8080端口的外部访问

firewall-cmd --add-port=8080/tcp --permanent # --add-port=8080/tcp表示放行8080端口的tcp访问,--permanent表示永久生效

firewall-cmd --reload # 重新载入防火墙规则使其生效

以root用户操作,创建tomcat用户 # 使用root用户操作

useradd tomcat

# 可选,为tomcat用户配置密码

passwd tomcat

下载Tomcat安装包 # 使用root用户操作

wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.27/bin/apache-tomcat-10.0.27.tar.gz

# 如果出现https相关错误,可以使用--no-check-certificate选项

wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.27/bin/apache-tomcat-10.0.27.tar.gz

#如10..0.027不行,可以换成8.0.23

wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat-8.0.23.tar.gz

解压Tomcat安装包 # 使用root用户操作,否则无权限解压到/export/server内,除非修改此文件夹权限

tar -zxvf apache-tomcat-10.0.27.tar.gz -C /export/server

tar -zxvf apache-tomcat-8.0.23.tar.gz -C /export/server

当看到像这样子情况,可以判断是权限受限的问题。 #使用ls -l 看看自己有什么权限

#添加权限

#1、退回到root权限,再到tomcat文件夹下

cd /home/tomcat/

#再一次解压

tar -zxvf apache-tomcat-8.0.23.tar.gz -C /export/server

再转到server下,可以看到我们刚刚解压的文件夹就有了 创建Tomcat软链接 # 使用root用户操作

ln -s /export/server/apache-tomcat-10.0.27 /export/server/tomcat

ln -s /export/server/apache-tomcat-8.0.23 /export/server/tomcat

修改tomcat安装目录权限 # 使用root用户操作,同时对软链接和tomcat安装文件夹进行修改,使用通配符*进行匹配

chown -R tomcat:tomcat tomcat

chown -R tomcat:tomcat apache-tomcat-8.0.23

确保tomcat与apache-tomcat-8.0.23所属用户均是tomcat 切换到tomcat用户 su - tomcat

启动tomcat cd /export/server/

cd tomcat/

ls -l

cd bin

ls -l

./startup.sh

当看到最后%Tomcat started时,就证明我们成功启动了tomcat了。 tomcat启动在8080端口,可以检查是否正常启动成功 netstat -anp | grep 8080

打开浏览器, 输入:http://centos-heima:8080或http://192.168.88.130:8080 使用主机名(需配置好本地的主机名映射)或 IP地址 访问Tomcat的WEB页面 其实是访问不了的,因为Linux内的防火墙会限制端口,导致只能内部访问,不能外部访问,我们只能在Linux上去访问自己主机才行 curl 127.0.0.1:8080

可以通过解压并部署Tomcat来解决。 再次打开网页就成功了。 至此,Tomcat安装配置完成。

Nginx安装部署

简介

​ Nginx* (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

​ 同Tomcat一样,Nginx可以托管用户编写的WEB应用程序成为可访问的网页服务,同时也可以作为流量代理服务器,控制流量的中转。

​ Nginx在WEB开发领域,基本上也是必备组件之一了。

安装

Nginx同样需要配置额外的yum仓库,才可以使用yum安装

安装Nginx的操作需要root身份

安装yum依赖程序 # root执行

yum install -y yum-utils

手动添加,nginx的yum仓库 yum程序使用的仓库配置文件,存放在:/etc/yum.repo.d内。 # root执行

cd /etc/yum.repos.d/

# 创建文件使用vim编辑

vim nginx.repo

# 填入如下内容并保存退出

[nginx-stable]

name=nginx stable repo

baseurl=http://nginx.org/packages/centos/$releasever/$basearch/

gpgcheck=1

enabled=1

gpgkey=https://nginx.org/keys/nginx_signing.key

module_hotfixes=true

[nginx-mainline]

name=nginx mainline repo

baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/

gpgcheck=1

enabled=0

gpgkey=https://nginx.org/keys/nginx_signing.key

module_hotfixes=true

通过如上操作,我们手动添加了nginx的yum仓库

通过yum安装最新稳定版的nginx # root执行

yum install -y nginx

启动(启动就行了,不用所有命令全部输进去!) # nginx自动注册了systemctl系统服务

systemctl start nginx # 启动

systemctl stop nginx # 停止

systemctl status nginx # 运行状态

systemctl enable nginx # 开机自启

systemctl disable nginx # 关闭开机自启

配置防火墙放行 nginx默认绑定80端口,需要关闭防火墙或放行80端口 # 方式1(推荐),关闭防火墙

systemctl stop firewalld # 关闭

systemctl disable firewalld # 关闭开机自启

# 方式2,放行80端口

firewall-cmd --add-port=80/tcp --permanent # 放行tcp规则下的80端口,永久生效

firewall-cmd --reload # 重新加载防火墙规则

启动后浏览器输入Linux服务器的IP地址或主机名即可访问 http://192.168.88.130 或 http://centos-heima

ps:80端口是访问网站的默认端口,所以后面无需跟随端口号

显示的指定端口也是可以的比如:

http://192.168.88.130:80http://centos:80

至此,Nginx安装配置完成。

RabbitMQ安装部署

简介

RabbitMQ一款知名的开源消息队列系统,为企业提供消息的发布、订阅、点对点传输等消息服务。

RabbitMQ在企业开发中十分常见,课程为大家演示快速搭建RabbitMQ环境。

安装

rabbitmq在yum仓库中的版本比较老,所以我们需要手动构建yum仓库

准备yum仓库 # root执行

# 1. 准备gpgkey密钥

rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc

rpm --import https://packagecloud.io/rabbitmq/erlang/gpgkey

rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey

#2.再转入到指定目录下

cd /etc/yum.repos.d/

#3.再显示一下

ls -l

# 4. 准备仓库文件

vi rabbitmq.repo

# 填入如下内容

[rabbitmq_erlang]

name=rabbitmq_erlang

baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch

repo_gpgcheck=1

gpgcheck=1

enabled=1

# PackageCloud's repository key and RabbitMQ package signing key

gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey

https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc

sslverify=1

sslcacert=/etc/pki/tls/certs/ca-bundle.crt

metadata_expire=300

[rabbitmq_erlang-source]

name=rabbitmq_erlang-source

baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS

repo_gpgcheck=1

gpgcheck=0

enabled=1

# PackageCloud's repository key and RabbitMQ package signing key

gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey

https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc

sslverify=1

sslcacert=/etc/pki/tls/certs/ca-bundle.crt

metadata_expire=300

##

## RabbitMQ server

##

[rabbitmq_server]

name=rabbitmq_server

baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch

repo_gpgcheck=1

gpgcheck=0

enabled=1

# PackageCloud's repository key and RabbitMQ package signing key

gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey

https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc

sslverify=1

sslcacert=/etc/pki/tls/certs/ca-bundle.crt

metadata_expire=300

[rabbitmq_server-source]

name=rabbitmq_server-source

baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMS

repo_gpgcheck=1

gpgcheck=0

enabled=1

gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey

sslverify=1

sslcacert=/etc/pki/tls/certs/ca-bundle.crt

metadata_expire=300

安装RabbitMQ # root执行

yum install -y erlang rabbitmq-server

Installed:(已安装:)——非命令

erlang.x86_64 0:23.3.4.11-1.el7 rabbitmq-server.noarch 0:3.10.0-1.el7

启动(并不需要全部命令全部输入进去) # root执行

# 使用systemctl管控,服务名:rabbitmq-server

systemctl enable rabbitmq-server # 开机自启

systemctl disable rabbitmq-server # 关闭开机自启

systemctl start rabbitmq-server # 启动

systemctl stop rabbitmq-server # 关闭

systemctl status rabbitmq-server # 查看状态

放行防火墙,RabbitMQ使用5672、15672、25672 3个端口 # 方式1(推荐),关闭防火墙

systemctl stop firewalld # 关闭

systemctl disable firewalld # 关闭开机自启

# 方式2,放行5672 25672端口

firewall-cmd --add-port=5672/tcp --permanent # 放行tcp规则下的5672端口,永久生效

firewall-cmd --add-port=15672/tcp --permanent # 放行tcp规则下的15672端口,永久生效

firewall-cmd --add-port=25672/tcp --permanent # 放行tcp规则下的25672端口,永久生效

firewall-cmd --reload # 重新加载防火墙规则

启动RabbitMQ的WEB管理控制台 rabbitmq-plugins enable rabbitmq_management

添加admin用户,并赋予权限 rabbitmqctl add_user admin 'Itheima66^'

rabbitmqctl set_permissions -p "/" "admin" ".*" ".*" ".*"

rabbitmqctl set_user_tags admin administrator

浏览器打开管理控制台 http://10.0.0.100:15672(中间为自身虚拟机的IP地址) 至此,RabbitMQ已经安装完成了。

Redis安装部署

简介

​ redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。

​ redis的特点就是:快 ,可以基于内存存储数据并提供超低延迟、超快的检索速度

​ 一般用于在系统中提供快速缓存的能力。

安装

配置EPEL仓库

EPEL 的全称叫 Extra Packages for Enterprise Linux 。EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL之后,就相当于添加了一个第三方源。EPEL则为服务器版本提供大量的rpm包(yum程序所使用的程序安装包,类似Windows的exe),而且大多数rpm包在官方 repository 中是找不到的。

# root执行

yum install -y epel-release

安装redis # root执行

yum install -y redis

启动redis # root执行

# 使用systemctl管控,服务名:redis

systemctl enable redis # 开机自启

systemctl disable redis # 关闭开机自启

systemctl start redis # 启动

systemctl stop redis # 关闭

systemctl status redis # 查看状态

放行防火墙,redis使用端口6379 # 方式1(推荐),关闭防火墙

systemctl stop firewalld # 关闭

systemctl disable firewalld # 关闭开机自启

# 方式2,放行6379端口

firewall-cmd --add-port=6379/tcp --permanent # 放行tcp规则下的6379端口,永久生效

firewall-cmd --reload

进入redis服务,进行测试 # 执行redis-cli

redis-cli

set mykey hello

get mykey

exit

至此,redis安装完成。

ElasticSearch安装部署

简介

全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 es)是目前全文搜索引擎的首选。

它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。

Elasticsearch简称es,在企业内同样是一款应用非常广泛的搜索引擎服务。

很多服务中的搜索功能,都是基于es来实现的。

安装

添加yum仓库 # root执行

# 导入仓库密钥

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

# 添加yum源

# 编辑文件

vim /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-7.x]

name=Elasticsearch repository for 7.x packages

baseurl=https://artifacts.elastic.co/packages/7.x/yum

gpgcheck=1

gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

enabled=1

autorefresh=1

type=rpm-md

# 更新yum缓存

yum makecache

安装es yum install -y elasticsearch

配置es vim /etc/elasticsearch/elasticsearch.yml

# 17行,设置集群名称

cluster.name: my-cluster

# 23行,设置节点名称

node.name: node-1

# 56行,允许外网访问

network.host: 0.0.0.0

# 74行,配置集群master节点

cluster.initial_master_nodes: ["node-1"]

启动es systemctl start | stop | status | enable | disable elasticsearch

关闭防火墙 systemctl stop firewalld

systemctl disable firewalld

测试 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vZz4SJm8-1681531212851)(null)] 至此,ElasticSearch安装完成。

集群化环境前置准备

介绍

​ 在前面,我们所学习安装的软件,都是以单机模式运行的。

​ 后续,我们将要学习大数据相关的软件部署,所以后续我们所安装的软件服务,大多数都是以集群化(多台服务器共同工作)模式运行的。

​ 所以,在当前小节,我们需要完成集群化环境的前置准备,包括创建多台虚拟机,配置主机名映射,SSH免密登录等等。

部署

配置多台Linux虚拟机

安装集群化软件,首要条件就是要有多台Linux服务器可用。

我们可以使用VMware提供的克隆功能,将我们的虚拟机额外克隆出3台来使用。

首先,关机当前CentOS系统虚拟机(可以使用root用户执行init 0来快速关机) 新建文件夹,文件夹起名为:虚拟机集群 克隆(步骤:1、选择“虚拟机中的当前状态”;2、选择“创建完整克隆”;3、改好名字和路径;4、确定下一步;5、按这样的方式一共克三台虚拟机) 开启node1,修改主机名为node1,并修改固定ip为:192.168.88.131 # 修改主机名

hostnamectl set-hostname node1

# 修改IP地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33

IPADDR="192.168.88.131"

# 重启网卡

systemctl stop network

systemctl start network

# 或者直接

systemctl restart network

同样的操作启动node2和node3, 修改node2主机名为node2,设置ip为192.168.88.132 修改node2主机名为node3,设置ip为192.168.88.133 配置FinalShell,配置连接到node1、node2、node3的连接

为了简单起见,建议配置root用户登录

准备主机名映射

在Windows系统中修改hosts文件,填入如下内容: 192.168.88.131 node1

192.168.88.132 node2

192.168.88.133 node3

在3台Linux的/etc/hosts文件中,填入如下内容(3台都要添加) 192.168.88.131 node1

192.168.88.132 node2

192.168.88.133 node3

配置SSH免密登录

简介

​ SSH服务是一种用于远程登录的安全认证协议。

​ 我们通过FinalShell远程连接到Linux,就是使用的SSH服务。

​ SSH服务支持:

通过账户+密码的认证方式来做用户认证通过账户+秘钥文件的方式做用户认证

​ SSH可以让我们通过SSH命令,远程的登陆到其它的主机上,比如:

在node1执行:ssh root@node2,将以root用户登录node2服务器,输入密码即可成功登陆

或者ssh node2,将以当前用户直接登陆到node2服务器。

SSH免密配置

​ 后续安装的集群化软件,多数需要远程登录以及远程执行命令,我们可以简单起见,配置三台Linux服务器之间的免密码互相SSH登陆

在每一台机器都执行:ssh-keygen -t rsa -b 4096,为了创建公钥, 一路回车到底即可 在每一台机器都执行: ssh-copy-id node1

ssh-copy-id node2

ssh-copy-id node3

执行完毕后,node1、node2、node3之间将完成root用户之间的免密互通 配置JDK环境 ​ 后续的大数据集群软件,多数是需要Java运行环境的,所以我们为每一台机器都配置JDK环境。 ​ JDK配置参阅:Tomcat安装部署环节。 关闭防火墙和SELinux ​ 集群化软件之间需要通过端口互相通讯,为了避免出现网络不通的问题,我们可以简单的在集群内部关闭防火墙。 在每一台机器都执行 systemctl stop firewalld

systemctl disable firewalld

​ Linux有一个安全模块:SELinux,用以限制用户和程序的相关权限,来确保系统的安全稳定。 ​ SELinux的配置同防火墙一样,非常复杂,课程中不多涉及,后续视情况可以出一章SELinux的配置课程。 ​ 在当前,我们只需要关闭SELinux功能,避免导致后面的软件运行出现问题即可,

在每一台机器都执行

vim /etc/sysconfig/selinux

# 将第七行,SELINUX=enforcing 改为

SELINUX=disabled

# 保存退出后,重启虚拟机即可,千万要注意disabled单词不要写错,不然无法启动系统

添加快照

​ 为了避免后续出现问题,在完成上述设置后,为每一台虚拟机都制作快照,留待使用。

补充命令 - scp

​ 后续的安装部署操作,我们将会频繁的在多台服务器之间相互传输数据。

​ 为了更加方面的互相传输,我们补充一个命令:scp

​ scp命令是cp命令的升级版,即:ssh cp,通过SSH协议完成文件的复制。

​ 其主要的功能就是:在不同的Linux服务器之间,通过SSH协议互相传输文件。

​ 只要知晓服务器的账户和密码(或密钥),即可通过SCP互传文件。

语法:

scp [-r] 参数1 参数2

- -r选项用于复制文件夹使用,如果复制文件夹,必须使用-r

- 参数1:本机路径 或 远程目标路径

- 参数2:远程目标路径 或 本机路径

如:

scp -r /export/server/jdk root@node2:/export/server/

将本机上的jdk文件夹, 以root的身份复制到node2的/export/server/内

同SSH登陆一样,账户名可以省略(使用本机当前的同名账户登陆)

如:

scp -r node2:/export/server/jdk /export/server/

将远程node2的jdk文件夹,复制到本机的/export/server/内

# scp命令的高级用法

cd /export/server

scp -r jdk node2:`pwd`/ # 将本机当前路径的jdk文件夹,复制到node2服务器的同名路径下

scp -r jdk node2:$PWD # 将本机当前路径的jdk文件夹,复制到node2服务器的同名路径下

Zookeeper集群安装部署

简介

​ ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

​ 除了为Hadoop和HBase提供协调服务外,Zookeeper也被其它许多软件采用作为其分布式状态一致性的依赖,比如Kafka,又或者一些软件项目中,也经常能见到Zookeeper作为一致性协调服务存在。

​ Zookeeper不论是大数据领域亦或是其它服务器开发领域,涉及到分布式状态一致性的场景,总有它的身影存在。

安装

​ Zookeeper是一款分布式的集群化软件,可以在多台服务器上部署,并协同组成分布式集群一起工作。

首先,要确保已经完成了集群化环境前置准备环节的全部内容 【node1上操作】下载Zookeeper安装包,并解压 # 下载

wget http://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz

# 确保如下目录存在,不存在就创建

mkdir -p /export/server

# 解压

tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /export/server

【node1上操作】创建软链接 ln -s /export/server/apache-zookeeper-3.5.9 /export/server/zookeeper

【node1上操作】修改配置文件 vim /export/server/zookeeper/conf/zoo.cfg

tickTime=2000

# zookeeper数据存储目录

dataDir=/export/server/zookeeper/data

clientPort=2181

initLimit=5

syncLimit=2

server.1=node1:2888:3888

server.2=node2:2888:3888

server.3=node3:2888:3888

【node1上操作】配置myid # 1. 创建Zookeeper的数据目录

mkdir /export/server/zookeeper/data

# 2. 创建文件,并填入1

vim /export/server/zookeeper/data/myid

# 在文件内填入1即可

【在node2和node3上操作】,创建文件夹 mkdir -p /export/server

【node1上操作】将Zookeeper 复制到node2和node3 cd /export/server

scp -r apache-zookeeper-3.5.9 node2:`pwd`/

scp -r apache-zookeeper-3.5.9 node3:`pwd`/

【在node2上操作】 # 1. 创建软链接

ln -s /export/server/apache-zookeeper-3.5.9 /export/server/zookeeper

# 2. 修改myid文件

vim /export/server/zookeeper/data/myid

# 修改内容为2

【在node3上操作】 # 1. 创建软链接

ln -s /export/server/apache-zookeeper-3.5.9 /export/server/zookeeper

# 2. 修改myid文件

vim /export/server/zookeeper/data/myid

# 修改内容为3

【在node1、node2、node3上分别执行】启动Zookeeper # 启动命令

/export/server/zookeeper/bin/zkServer.sh start # 启动Zookeeper

【在node1、node2、node3上分别执行】检查Zookeeper进程是否启动 jps

# 结果中找到有:QuorumPeerMain 进程即可

【node1上操作】验证Zookeeper /export/server/zookeeper/zkCli.sh

# 进入到Zookeeper控制台中后,执行

ls /

# 如无报错即配置成功

至此Zookeeper安装完成

Kafka集群安装部署

简介

​ Kafka是一款分布式的、去中心化的、高吞吐低延迟、订阅模式的消息队列系统。

​ 同RabbitMQ一样,Kafka也是消息队列。不过RabbitMQ多用于后端系统,因其更加专注于消息的延迟和容错。

​ Kafka多用于大数据体系,因其更加专注于数据的吞吐能力。

​ Kafka多数都是运行在分布式(集群化)模式下,所以课程将以3台服务器,来完成Kafka集群的安装部署。

安装

确保已经跟随前面的视频,安装并部署了JDK和Zookeeper服务

Kafka的运行依赖JDK环境和Zookeeper请确保已经有了JDK环境和Zookeeper

【在node1操作】下载并上传Kafka的安装包 # 下载安装包

wget http://archive.apache.org/dist/kafka/2.4.1/kafka_2.12-2.4.1.tgz

【在node1操作】解压 mkdir -p /export/server # 此文件夹如果不存在需先创建

# 解压

tar -zxvf kafka_2.12-2.4.1.tgz -C /export/server/

# 创建软链接

ln -s /export/server/kafka_2.12-2.4.1 /export/server/kafka

【在node1操作】修改Kafka目录内的config目录内的server.properties文件 cd /export/server/kafka/config

# 指定broker的id

broker.id=1

# 指定 kafka的绑定监听的地址

listeners=PLAINTEXT://node1:9092

# 指定Kafka数据的位置

log.dirs=/export/server/kafka/data

# 指定Zookeeper的三个节点

zookeeper.connect=node1:2181,node2:2181,node3:2181

【在node1操作】将node1的kafka复制到node2和node3 cd /export/server

# 复制到node2同名文件夹

scp -r kafka_2.12-2.4.1 node2:`pwd`/

# 复制到node3同名文件夹

scp -r kafka_2.12-2.4.1 node3:$PWD

【在node2操作】 # 创建软链接

ln -s /export/server/kafka_2.12-2.4.1 /export/server/kafka

cd /export/server/kafka/config

# 指定broker的id

broker.id=2

# 指定 kafka的绑定监听的地址

listeners=PLAINTEXT://node2:9092

# 指定Kafka数据的位置

log.dirs=/export/server/kafka/data

# 指定Zookeeper的三个节点

zookeeper.connect=node1:2181,node2:2181,node3:2181

【在node3操作】 # 创建软链接

ln -s /export/server/kafka_2.12-2.4.1 /export/server/kafka

cd /export/server/kafka/config

# 指定broker的id

broker.id=3

# 指定 kafka的绑定监听的地址

listeners=PLAINTEXT://node3:9092

# 指定Kafka数据的位置

log.dirs=/export/server/kafka/data

# 指定Zookeeper的三个节点

zookeeper.connect=node1:2181,node2:2181,node3:2181

启动kafka # 请先确保Zookeeper已经启动了

# 方式1:【前台启动】分别在node1、2、3上执行如下语句

/export/server/kafka/bin/kafka-server-start.sh /export/server/kafka/config/server.properties

# 方式2:【后台启动】分别在node1、2、3上执行如下语句

nohup /export/server/kafka/bin/kafka-server-start.sh /export/server/kafka/config/server.properties 2>&1 >> /export/server/kafka/kafka-server.log &

验证Kafka启动 # 在每一台服务器执行

jps

测试Kafka能否正常使用

创建测试主题

# 在node1执行,创建一个主题

/export/server/kafka_2.12-2.4.1/bin/kafka-topics.sh --create --zookeeper node1:2181 --replication-factor 1 --partitions 3 --topic test

运行测试,请在FinalShell中打开2个node1的终端页面

# 打开一个终端页面,启动一个模拟的数据生产者

/export/server/kafka_2.12-2.4.1/bin/kafka-console-producer.sh --broker-list node1:9092 --topic test

# 再打开一个新的终端页面,在启动一个模拟的数据消费者

/export/server/kafka_2.12-2.4.1/bin/kafka-console-consumer.sh --bootstrap-server node1:9092 --topic test --from-beginning

大数据集群(Hadoop生态)安装部署

简介

​ 1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 ​ 2)主要解决,海量数据的存储和海量数据的分析计算问题。

​ Hadoop HDFS 提供分布式海量数据存储能力

​ Hadoop YARN 提供分布式集群资源管理能力

​ Hadoop MapReduce 提供分布式海量数据计算能力

前置要求

请确保完成了集群化环境前置准备章节的内容即:JDK、SSH免密、关闭防火墙、配置主机名映射等前置操作

Hadoop集群角色

​ Hadoop生态体系中总共会出现如下进程角色:

Hadoop HDFS的管理角色:Namenode进程(仅需1个即可(管理者一个就够))Hadoop HDFS的工作角色:Datanode进程(需要多个(工人,越多越好,一个机器启动一个))Hadoop YARN的管理角色:ResourceManager进程(仅需1个即可(管理者一个就够))Hadoop YARN的工作角色:NodeManager进程(需要多个(工人,越多越好,一个机器启动一个))Hadoop 历史记录服务器角色:HistoryServer进程(仅需1个即可(功能进程无需太多1个足够))Hadoop 代理服务器角色:WebProxyServer进程(仅需1个即可(功能进程无需太多1个足够))Zookeeper的进程:QuorumPeerMain进程(仅需1个即可(Zookeeper的工作者,越多越好))

角色和节点分配

角色分配如下:

node1:Namenode、Datanode、ResourceManager、NodeManager、HistoryServer、WebProxyServer、QuorumPeerMainnode2:Datanode、NodeManager、QuorumPeerMainnode3:Datanode、NodeManager、QuorumPeerMain

安装

调整虚拟机内存

如上图,可以看出node1承载了太多的压力。同时node2和node3也同时运行了不少程序

为了确保集群的稳定,需要对虚拟机进行内存设置。

请在VMware中,对:

node1设置4GB或以上内存node2和node3设置2GB或以上内存

大数据的软件本身就是集群化(一堆服务器)一起运行的。

现在我们在一台电脑中以多台虚拟机来模拟集群,确实会有很大的内存压力哦。

Zookeeper集群安装部署

详细内容请点击:Zookeeper集群安装部署 进行跳转

Hadoop集群部署

下载Hadoop安装包、解压、配置软链接 # 1. 下载

wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz

# 2. 解压

# 请确保目录/export/server存在

tar -zxvf hadoop-3.3.0.tar.gz -C /export/server/

# 3. 构建软链接

ln -s /export/server/hadoop-3.3.0 /export/server/hadoop

修改配置文件:hadoop-env.sh

Hadoop的配置文件要修改的地方很多,请细心

cd 进入到/export/server/hadoop/etc/hadoop,文件夹中,配置文件都在这里 修改hadoop-env.sh文件

此文件是配置一些Hadoop用到的环境变量

这些是临时变量,在Hadoop运行时有用

如果要永久生效,需要写到/etc/profile中

# 在文件开头加入:

# 配置Java安装路径

export JAVA_HOME=/export/server/jdk

# 配置Hadoop安装路径

export HADOOP_HOME=/export/server/hadoop

# Hadoop hdfs配置文件路径

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

# Hadoop YARN配置文件路径

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

# Hadoop YARN 日志文件夹

export YARN_LOG_DIR=$HADOOP_HOME/logs/yarn

# Hadoop hdfs 日志文件夹

export HADOOP_LOG_DIR=$HADOOP_HOME/logs/hdfs

# Hadoop的使用启动用户配置

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

export YARN_PROXYSERVER_USER=root

修改配置文件:core-site.xml 如下,清空文件,填入如下内容

fs.defaultFS

hdfs://node1:8020

io.file.buffer.size

131072

配置:hdfs-site.xml文件

dfs.datanode.data.dir.perm

700

dfs.namenode.name.dir

/data/nn

Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently.

dfs.namenode.hosts

node1,node2,node3

List of permitted DataNodes.

dfs.blocksize

268435456

dfs.namenode.handler.count

100

dfs.datanode.data.dir

/data/dn

配置:mapred-env.sh文件 # 在文件的开头加入如下环境变量设置

export JAVA_HOME=/export/server/jdk

export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000

export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA

配置:mapred-site.xml文件

mapreduce.framework.name

yarn

mapreduce.jobhistory.address

node1:10020

mapreduce.jobhistory.webapp.address

node1:19888

mapreduce.jobhistory.intermediate-done-dir

/data/mr-history/tmp

mapreduce.jobhistory.done-dir

/data/mr-history/done

yarn.app.mapreduce.am.env

HADOOP_MAPRED_HOME=$HADOOP_HOME

mapreduce.map.env

HADOOP_MAPRED_HOME=$HADOOP_HOME

mapreduce.reduce.env

HADOOP_MAPRED_HOME=$HADOOP_HOME

配置:yarn-env.sh文件 # 在文件的开头加入如下环境变量设置

export JAVA_HOME=/export/server/jdk

export HADOOP_HOME=/export/server/hadoop

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_LOG_DIR=$HADOOP_HOME/logs/yarn

export HADOOP_LOG_DIR=$HADOOP_HOME/logs/hdfs

配置:yarn-site.xml文件

yarn.log.server.url

http://node1:19888/jobhistory/logs

yarn.web-proxy.address

node1:8089

proxy server hostname and port

yarn.log-aggregation-enable

true

Configuration to enable or disable log aggregation

yarn.nodemanager.remote-app-log-dir

/tmp/logs

Configuration to enable or disable log aggregation

yarn.resourcemanager.hostname

node1

yarn.resourcemanager.scheduler.class

org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler

yarn.nodemanager.local-dirs

/data/nm-local

Comma-separated list of paths on the local filesystem where intermediate data is written.

yarn.nodemanager.log-dirs

/data/nm-log

Comma-separated list of paths on the local filesystem where logs are written.

yarn.nodemanager.log.retain-seconds

10800

Default time (in seconds) to retain log files on the NodeManager Only applicable if log-aggregation is disabled.

yarn.nodemanager.aux-services

mapreduce_shuffle

Shuffle service that needs to be set for Map Reduce applications.

修改workers文件 # 全部内容如下

node1

node2

node3

分发hadoop到其它机器

# 在node1执行

cd /export/server

scp -r hadoop-3.3.0 node2:`pwd`/

scp -r hadoop-3.3.0 node2:`pwd`/

在node2、node3执行 # 创建软链接

ln -s /export/server/hadoop-3.3.0 /export/server/hadoop

创建所需目录

在node1执行: mkdir -p /data/nn

mkdir -p /data/dn

mkdir -p /data/nm-log

mkdir -p /data/nm-local

在node2执行: mkdir -p /data/dn

mkdir -p /data/nm-log

mkdir -p /data/nm-local

在node3执行: mkdir -p /data/dn

mkdir -p /data/nm-log

mkdir -p /data/nm-local

配置环境变量 在node1、node2、node3修改/etc/profile export HADOOP_HOME=/export/server/hadoop

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

执行source /etc/profile生效 格式化NameNode,在node1执行 hadoop namenode -format

hadoop这个命令来自于:$HADOOP_HOME/bin中的程序

由于配置了环境变量PATH,所以可以在任意位置执行hadoop命令哦

启动hadoop的hdfs集群,在node1执行即可 start-dfs.sh

# 如需停止可以执行

stop-dfs.sh

start-dfs.sh这个命令来自于:$HADOOP_HOME/sbin中的程序

由于配置了环境变量PATH,所以可以在任意位置执行start-dfs.sh命令哦

启动hadoop的yarn集群,在node1执行即可 start-yarn.sh

# 如需停止可以执行

stop-yarn.sh

启动历史服务器 mapred --daemon start historyserver

# 如需停止将start更换为stop

启动web代理服务器 yarn-daemon.sh start proxyserver

# 如需停止将start更换为stop

验证Hadoop集群运行情况

在node1、node2、node3上通过jps验证进程是否都启动成功 验证HDFS,浏览器打开:http://node1:9870 创建文件test.txt,随意填入内容,并执行: hadoop fs -put test.txt /test.txt

hadoop fs -cat /test.txt

验证YARN,浏览器打开:http://node1:8088 执行: # 创建文件words.txt,填入如下内容

itheima itcast hadoop

itheima hadoop hadoop

itheima itcast

# 将文件上传到HDFS中

hadoop fs -put words.txt /words.txt

# 执行如下命令验证YARN是否正常

hadoop jar /export/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount -Dmapred.job.queue.name=root.root /words.txt /output

大数据NoSQL数据库HBase集群部署

简介

​ HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。

​ 和Redis一样,HBase是一款KeyValue型存储的数据库。

​ 不过和Redis设计方向不同

Redis设计为少量数据,超快检索 HBase设计为海量数据,快速检索 ​ HBase在大数据领域应用十分广泛,现在我们来在node1、node2、node3上部署HBase集群。

安装

HBase依赖Zookeeper、JDK、Hadoop(HDFS),请确保已经完成前面

集群化软件前置准备(JDK)ZookeeperHadoop这些环节的软件安装 【node1执行】下载HBase安装包 # 下载

wget http://archive.apache.org/dist/hbase/2.1.0/hbase-2.1.0-bin.tar.gz

# 解压

tar -zxvf hbase-2.1.0-bin.tar.gz -C /export/server

# 配置软链接

ln -s /export/server/hbase-2.1.0 /export/server/hbase

【node1执行】,修改配置文件,修改conf/hbase-env.sh文件 # 在28行配置JAVA_HOME

export JAVA_HOME=/export/server/jdk

# 在126行配置:

# 意思表示,不使用HBase自带的Zookeeper,而是用独立Zookeeper

export HBASE_MANAGES_ZK=false

# 在任意行,比如26行,添加如下内容:

export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"

【node1执行】,修改配置文件,修改conf/hbase-site.xml文件 # 将文件的全部内容替换成如下内容:

hbase.rootdir

hdfs://node1:8020/hbase

hbase.cluster.distributed

true

hbase.zookeeper.quorum

node1,node2,node3

hbase.zookeeper.property.dataDir

/export/server/apache-zookeeper-3.6.0-bin/data

hbase.unsafe.stream.capability.enforce

false

【node1执行】,修改配置文件,修改conf/regionservers文件 # 填入如下内容

node1

node2

node3

【node1执行】,分发hbase到其它机器 scp -r /export/server/hbase-2.1.0 node2:/export/server/

scp -r /export/server/hbase-2.1.0 node3:/export/server/

【node2、node3执行】,配置软链接 ln -s /export/server/hbase-2.1.0 /export/server/hbase

【node1、node2、node3执行】,配置环境变量 # 配置在/etc/profile内,追加如下两行

export HBASE_HOME=/export/server/hbase

export PATH=$HBASE_HOME/bin:$PATH

source /etc/profile

【node1执行】启动HBase

请确保:Hadoop HDFS、Zookeeper是已经启动了的

start-hbase.sh

# 如需停止可使用

stop-hbase.sh

由于我们配置了环境变量export PATH=

P

A

T

H

:

PATH:

PATH:HBASE_HOME/bin

start-hbase.sh即在$HBASE_HOME/bin内,所以可以无论当前目录在哪,均可直接执行

验证HBase 浏览器打开:http://node1:16010,即可看到HBase的WEB UI页面 简单测试使用HBase 【node1执行】 hbase shell

# 创建表

create 'test', 'cf'

# 插入数据

put 'test', 'rk001', 'cf:info', 'itheima'

# 查询数据

get 'test', 'rk001'

# 扫描表数据

scan 'test'

分布式内存计算Spark环境部署

注意

本小节的操作,基于:大数据集群(Hadoop生态)安装部署环节中所构建的Hadoop集群

如果没有Hadoop集群,请参阅前置内容,部署好环境。

简介

Spark是一款分布式内存计算引擎,可以支撑海量数据的分布式计算。

Spark在大数据体系是明星产品,作为最新一代的综合计算引擎,支持离线计算和实时计算。

在大数据领域广泛应用,是目前世界上使用最多的大数据分布式计算引擎。

我们将基于前面构建的Hadoop集群,部署Spark Standalone集群。

安装

【node1执行】下载并解压 wget https://archive.apache.org/dist/spark/spark-2.4.5/spark-2.4.5-bin-hadoop2.7.tgz

# 解压

tar -zxvf spark-2.4.5-bin-hadoop2.7.tgz -C /export/server/

# 软链接

ln -s /export/server/spark-2.4.5-bin-hadoop2.7 /export/server/spark

【node1执行】修改配置文件名称 # 改名

cd /export/server/spark/conf

mv spark-env.sh.template spark-env.sh

mv slaves.template slaves

【node1执行】修改配置文件,spark-env.sh ## 设置JAVA安装目录

JAVA_HOME=/export/server/jdk

## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群

HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop

YARN_CONF_DIR=/export/server/hadoop/etc/hadoop

## 指定spark老大Master的IP和提交任务的通信端口

export SPARK_MASTER_HOST=node1

export SPARK_MASTER_PORT=7077

SPARK_MASTER_WEBUI_PORT=8080

SPARK_WORKER_CORES=1

SPARK_WORKER_MEMORY=1g

【node1执行】修改配置文件,slaves node1

node2

node3

【node1执行】分发 scp -r spark-2.4.5-bin-hadoop2.7 node2:$PWD

scp -r spark-2.4.5-bin-hadoop2.7 node3:$PWD

【node2、node3执行】设置软链接 ln -s /export/server/spark-2.4.5-bin-hadoop2.7 /export/server/spark

【node1执行】启动Spark集群 /export/server/spark/sbin/start-all.sh

# 如需停止,可以

/export/server/spark/sbin/stop-all.sh

打开Spark监控页面,浏览器打开:http://node1:8081 【node1执行】提交测试任务 /export/server/spark/bin/spark-submit --master spark://node1:7077 --class org.apache.spark.examples.SparkPi /export/server/spark/examples/jars/spark-examples_2.11-2.4.5.jar

分布式内存计算Flink环境部署

注意

​ 本小节的操作,基于:大数据集群(Hadoop生态)安装部署环节中所构建的Hadoop集群

​ 如果没有Hadoop集群,请参阅前置内容,部署好环境。

简介

​ Flink同Spark一样,是一款分布式内存计算引擎,可以支撑海量数据的分布式计算。

​ Flink在大数据体系同样是明星产品,作为最新一代的综合计算引擎,支持离线计算和实时计算。

​ 在大数据领域广泛应用,是目前世界上除去Spark以外,应用最为广泛的分布式计算引擎。

​ 我们将基于前面构建的Hadoop集群,部署Flink Standalone集群。Spark更加偏向于离线计算而Flink更加偏向于实时计算。

安装

【node1操作】下载安装包 wget https://archive.apache.org/dist/flink/flink-1.10.0/flink-1.10.0-bin-scala_2.11.tgz

# 解压

tar -zxvf flink-1.10.0-bin-scala_2.11.tgz -C /export/server/

# 软链接

ln -s /export/server/flink-1.10.0 /export/server/flink

【node1操作】修改配置文件,conf/flink-conf.yaml # jobManager 的IP地址

jobmanager.rpc.address: node1

# JobManager 的端口号

jobmanager.rpc.port: 6123

# JobManager JVM heap 内存大小

jobmanager.heap.size: 1024m

# TaskManager JVM heap 内存大小

taskmanager.heap.size: 1024m

# 每个 TaskManager 提供的任务 slots 数量大小

taskmanager.numberOfTaskSlots: 2

#是否进行预分配内存,默认不进行预分配,这样在我们不使用flink集群时候不会占用集群资源

taskmanager.memory.preallocate: false

# 程序默认并行计算的个数

parallelism.default: 1

#JobManager的Web界面的端口(默认:8081)

jobmanager.web.port: 8081

【node1操作】,修改配置文件,conf/slaves node1

node2

node3

【node1操作】分发Flink安装包到其它机器 cd /export/server

scp -r flink-1.10.0 node2:`pwd`/

scp -r flink-1.10.0 node3:`pwd`/

【node2、node3操作】 # 配置软链接

ln -s /export/server/flink-1.10.0 /export/server/flink

【node1操作】,启动Flink /export/server/flink/bin/start-cluster.sh

验证Flink启动 # 浏览器打开

http://node1:8081

提交测试任务 【node1执行】 /export/server/flink/bin/flink run /export/server/flink-1.10.0/examples/batch/WordCount.jar

运维监控Zabbix部署

简介

​ Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。

​ Zabbix 是一个企业级分布式开源监控解决方案。

​ Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。

安装

安装整体步骤:

准备Linux 服务器(虚拟机)安装Mysql安装zabbix( 包含 server agent web)配置 mysql, 为zabbix创建表结构配置zabbix server启动并开启开机自启动

安装前准备 - Mysql

安装ZabbixServer需要先安装好Mysql数据库

课程使用Mysql 5.7

安装步骤:

# 安装Mysql yum库

rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm

# yum安装Mysql

yum -y install mysql-community-server

# 启动Mysql设置开机启动

systemctl start mysqld

systemctl enable mysqld

# 检查Mysql服务状态

systemctl status mysqld

# 第一次启动mysql,会在日志文件中生成root用户的一个随机密码,使用下面命令查看该密码

grep 'temporary password' /var/log/mysqld.log

# 修改root用户密码

mysql -u root -p -h localhost

Enter password:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root!@#$';

# 如果你想设置简单密码,需要降低Mysql的密码安全级别

set global validate_password_policy=LOW; # 密码安全级别低

set global validate_password_length=4; # 密码长度最低4位即可

# 然后就可以用简单密码了(课程中使用简单密码,为了方便,生产中不要这样)

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

mysql> grant all privileges on *.* to root@'%' identified by 'root';

安装Zabbix Server 和 Zabbix Agent

初始安装,我们先安装ZabbixServer以及在Server本机安装Agent。

打开官网下载页面:https://www.zabbix.com/download?zabbix=4.0&os_distribution=centos&os_version=7&db=mysql

选择对应的版本,然后再下面官网给出了具体的安装命令,使用rpm和yum来进行安装。

需要有网络。

以下内容来自官方页面

a. 安装Zabbix yum库

documentation

rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm

yum clean all

b. 安装Zabbix Server、前端、Agent

yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent

# 如果只需要安装Agent的话

yum -y install zabbix-agent

c. 初始化Mysql数据库

documentation

在Mysql中操作

# 登录Mysql 数据库

mysql -uroot -pYourPassword

mysql> create database zabbix character set utf8 collate utf8_bin;

mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';

# 或者: grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';

mysql> quit;

测试在Zabbix Server服务器上能否远程登录Mysql,如果可以登录继续向下走。

Import initial schema and data. You will be prompted to enter your newly created password.

# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

d. 为Zabbix Server配置数据库

Edit file /etc/zabbix/zabbix_server.conf

DBPassword=password

DBHost=mysql-host-ip-or-hostname

e. 配置Zabbix的PHP前端

Edit file /etc/httpd/conf.d/zabbix.conf, uncomment and set the right timezone for you.# php_value date.timezone Asia/Shanghai

Start Zabbix server and agent processes and make it start at system boot:

systemctl restart zabbix-server zabbix-agent httpd # 启动、重启

systemctl enable zabbix-server zabbix-agent httpd # 开机自启

Now your Zabbix server is up and running!

配置zabbix 前端(WEB UI)

打开:http://192.168.88.131/zabbix

即可进入Zabbix页面,在首次打开的时候,会进入设置页面,如图:

点击下一步,会检查相应的设置是否都正常

如果一切正常,点击下一步。

配置DB连接

按具体情况填写即可

配置Server细节

具体配置即可,Name表示这个Zabbix服务的名字,这里起名叫ITHEIMA-TEST

安装前总结预览

检查确认没有问题就下一步

配置完成

初始管理员账户Admin密码zabbix

输入账户密码后,就能进入zabbix页面了。

如下图:

现在zabbix我们就已经部署完了。

运维监控Grafana部署

简介

​ Grafana是一个很棒的开源监控系统和时间序列数据可视化平台,支持多个数据源(如 Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch 等)的数据查询、展示和告警。

它提供了丰富的可视化工具和插件,用户可以自由定制和配置监控仪表盘,以更加直观地展示和查询数据,帮助用户快速发现和解决系统问题。

安装

部署形式

Grafana支持两种部署形式

自行部署, 可以部署在操作系统之上. 自行提供服务器, 域名等.Grafana官方托管. 无需安装, 在线注册即可得到一个专属于自己的Grafana, 但是要花钱的. 是一种SaaS服务

我们课程选择方式1

方式1安装

Grafana支持常见的绝大多数操作系统, 如windows mac linux 同时也支持部署在docker中.

大多数情况下, Grafana都是部署在linux服务器之上. 所以本课程也是基于Linux系统来讲解.

对windows mac系统 或 docker部署有兴趣的同学, 请参考: https://grafana.com/grafana/download

我们部署Grafana可以使用YUM来进行部署.

# 创建一个文件

vim /etc/yum.repos.d/grafana.repo

# 将下面的内容复制进去

[grafana]

name=grafana

baseurl=https://packages.grafana.com/oss/rpm

repo_gpgcheck=1

enabled=1

gpgcheck=1

gpgkey=https://packages.grafana.com/gpg.key

sslverify=1

sslcacert=/etc/pki/tls/certs/ca-bundle.crt

# 最后安装

yum install grafana

配置说明

grafana-server具有许多配置选项,这些选项可以在.ini配置文件中指定,也可以使用环境变量指定。

Note. Grafana needs to be restarted for any configuration changes to take effect.

配置文件注释

;符号在.ini文件中全局表示注释 ()

配置文件路径

如果是自己解压安装, 或者自行编译的方式安装, 配置文件在:

默认: $WORKING_DIR/conf/defaults.ini自定义:$WORKING_DIR/conf/custom.ini自定义配置文件路径可以被参数--config覆盖

对于YUM RPM 安装的方式, 配置文件在: /etc/grafana/grafana.ini

使用环境变量

可以使用以下语法使用环境变量来覆盖配置文件中的所有选项:

GF__

其中SectionName是方括号内的文本。一切都应为大写,.应替换为_ 例如,给定以下配置设置:

# default section

instance_name = ${HOSTNAME}

[security]

admin_user = admin

[auth.google]

client_secret = 0ldS3cretKey

Then you can override them using:

export GF_DEFAULT_INSTANCE_NAME=my-instance

export GF_SECURITY_ADMIN_USER=true # GF_ 固定 SECURITY 是SectionName ADMIN_USER 是配置的key 转大写 . 转 _

export GF_AUTH_GOOGLE_CLIENT_SECRET=newS3cretKey

开始配置

Grafana支持使用Sqlite3 Postgresql Mysql这三种数据库作为其元数据的存储.

我们课程使用Mysql. 和zabbix的元数据mysql共用一个实例

只需要配置如下内容即可:

并登陆mysql, 执行:

create database grafana CHARACTER SET utf8 COLLATE utf8_general_ci;

创建Grafana使用的数据库作为元数据存储.

启动

systemctl daemon-reload

systemctl start grafana-server

systemctl enable grafana-server

浏览器打开:http://node1:3000

默认账户密码:admin/admin

至此,我们这次的Linux快速入门到精通笔记部分已完结。

精彩文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。