大数据平台环境搭建

Posted zihao_bluefo2k

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据平台环境搭建相关的知识,希望对你有一定的参考价值。

文章目录

任务一:大数据平台环境搭建

注:配上大数据组件下载地址:Index of /dist (apache.org)

一、Docker 容器环境安装配置

1. 安装 Docker 服务
Docker 旧版本
yum install -y docker

查看 docker 是否安装成功

docker -v
rpm -qa | grep -i docker

卸载 docker

yum remove -y docker-*
Docker 新版本(手动安装)

安装依赖的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

添加 docker 的 Yum 源

配置 docker 的 yum 源是为了安装 docker 的时候速度更快,更稳定,成功率高

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装 docker

yum install -y docker-ce docker-ce-cli containerd.io

查看 docker 是否安装成功

docker -v
Docker 新版本(自动安装)

卸载 docker

yum remove -y docker-*

安装 docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

查看 docker 是否安装成功

docker -v
2. Docker 服务

启动 docker 服务

systemctl start docker

开机启动 docker 服务

systemctl enable docker

查看 docker 服务状态

systemctl status docker

重启 docker 服务

systemctl restart docker
3. 配置 docker 镜像加速器

配置镜像加速器是为了让我们从仓库拉取镜像的时候速度更快,更稳定,成功率高

配置加速器

vim /etc/docker/daemon.json

"registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://mirror.ccs.tencentyun.com",
        "https://3iy7bctt.mirror.aliyuncs.com"
 ]

重新加载配置文件

systemctl daemon-reload

重启 docker 服务

systemctl restart docker

查看 docker 服务状态

systemctl status docker

查看加速器是否配置成功

docker info
4. Docker 镜像基本命令
查看镜像
docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

注意:

REPOSITORY:来源仓库

TAG:镜像的标签信息,表示镜像的版本,只是标记,并不能表示镜像内容

IMAGE ID:镜像 id,唯一表示一个镜像,如果两个镜像的 ID 相同,说明它们实际上指向了同一个镜像,只是具有不同标签名称而已

CREATED:镜像的最后更新时间

SIZE:镜像大小

搜索镜像
docker search centos
拉取镜像

当我们在本地主机上使用一个不存在的镜像时,Docker 就会自动下载这个镜像,如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它

docker pull centos:7.5.1804
docker pull mysql:5.7
docker pull hello-world
docker images

注意:如果不加版本号,则默认版本号为最新的

注意:镜像拉取完成后,我们可以用镜像来运行容器

删除镜像

使用 tag 标签删除镜像

注意:如果删除的时候报错:有容器使用了该镜像,则需要先删除使用过该镜像的容器,才能删除该镜像

# docker rmi 镜像名:版本号

docker rmi -f hello-world:latest
docker images

使用 id 删除镜像

# docker rmi id号

docker rmi -f feb5d9fea6a5
把镜像保存为具体文件
# docker save -o 本地路径+文件名
# 注意:文件名建议.tar结尾

docker save -o centos.tar centos:7.5.1804
把镜像加载到 docker 中

方法一:

docker load -i centos.tar
docker load --input centos.tar

方法二:

docker load < centos.tar
5. Docker 容器基本命令
创建容器
docker create -i -t -h bigdata2 --name centos100 centos:7.5.1804 /bin/bash

# -h HOSTNAME:设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts
# docker create -i -t -h master --name masterbigdata centos:7.5.1804 /bin/bash
# --name="名称": 为容器指定一个名称

docker create -it centos:7.5.1804 /bin/bash

注意:

  • 容器的名称是唯一的

  • 如果不指定容器名称,docker 会自动分配

查看容器
# 查看所有容器
docker ps -a
# 查看所有运行状态的容器
docker ps
启动容器
docker start 容器名称/ID
停止容器
docker stop 容器名称/ID
进入容器

方式一:

# docker exec -i -t 容器ID/名称 /bin/bash

方式二:

# docker attach 容器ID/名称

区别:exec 用 exit 退出时,不停止容器;attach 用 exit 退出时,停止容器

exitctrl+p->ctrl+q
exec退出不停止容器退出不停止容器
attach退出停止容器退出不停止容器
退出容器
exit
重启容器
# docker restart 容器ID/名称
删除容器
  • 删除未启动的容器
# docker rm 容器ID/名称
  • 删除启动的容器
# docker stop 容器ID/名称
  • 强制删除启动的容器
# docker rm -f 容器ID/名称
一步完成新建和启动容器
docker run -i -t -h bigdata2 --name centos102 centos:7.5.1804 /bin/bash

# -h HOSTNAME:设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts
# docker run -i -t -h master --name masterbigdata centos:7.5.1804 /bin/bash
# --name="名称": 为容器指定一个名称
docker run -i -t -d -h master --name masterbigdata centos:7.5.1804 /bin/bash
docker run -i -t -d -h slave1 --name slave1bigdata centos:7.5.1804 /bin/bash
docker run -i -t -d -h slave2 --name slave2bigdata centos:7.5.1804 /bin/bash

# docker exec -i -t 容器ID/名称 /bin/bash

相当于

docker pull # (本地不存在镜像,则会拉取)
docker create
docker start
docker exec

后台启动容器

docker run -i -t -h bigdata3 --name centos103 -d centos:7.5.1804 /bin/bash

注意:

-d 指启动容器后,但不进入容器,挂后台

启动 MySQL 容器
docker run -p 3307:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=000000 -d mysql:5.7

注意:

-p 指定主机映射的端口号和 MySQL 的端口号,格式为 3307:3306

-e 指定 root 用户名密码:-e MYSQL_ROOT_PASSWORD=000000

获取所有的容器 ID
docker ps -a -q
删除所有容器
docker rm -f $(docker ps -a -q)
docker rm -f `docker ps -a -q`
杀死所有运行容器
docker stop $(docker ps -a -q)
docker stop `docker ps -a -q`
docker kill $(docker ps -a -q)
docker kill `docker ps -a -q`

注意:docker kill 比 docker stop 停止容器要快

启动所有容器
docker start $(docker ps -a -q)
docker start `docker ps -a -q`
导入和导出容器

思路:修改 centos 容器 --> 导出成 .tar 文件 --> .tar 文件导入到新系统(以镜像的方式存在) --> 通过镜像启动容器

  • 导出容器
docker export -o abc.tar 0925e9bc7ef1
docker export 0925e9bc7ef1 > abc.tar
  • 导入容器
# docker import 文件路径/文件名 镜像名:版本号

docker import abc.tar centos:2
容器与主机之间复制文件

容器和主机之间复制文件的时候,要保证容器已经启动

从主机复制文件到容器中:

docker cp ./docker101.txt 18e9a72a0bd4:/

从容器复制文件到主机中:

docker cp 18e9a72a0bd4:/docker102.txt ./

注意:

  • 容器与主机之间复制文件,容器需要是启动状态

  • 容器与容器之间不能复制文件

二、Hadoop 完全分布式安装配置

1. 修改 IP 和 MAC 地址

三台机器都要修改

vi /etc/sysconfig/network-scripts/ifcfg-ens33	# 进入本机网卡配置文件

添加如下内容

ONBOOT="yes"	# 启动时是否激活 yes | no
BOOTPROTO="static"	# 协议类型
IPADDR=192.168.44.100	# 网络IP地址
NETMASK=255.255.255.0	# 网络子网地址
GATEWAY=192.168.44.2	# 网关地址
HWADDR=00:0C:29:11:26:A1	# 网卡MAC地址
DNS1=8.8.8.8	# 域名服务

重启网卡

service network restart

使用 ping 命令测试网络的连通性

ping www.baidu.com

关闭 centos7 蜂鸣器声音

cd /etc/modprobe.d
vi pcspkr.conf
# 添加内容如下
blacklist pcspkr

保存之后重启

安装 net-tools 包

yum install net-tools

安装 vim 命令

yum -y install vim*
2. 修改主机名
vim /etc/hostname

添加如下内容

bigdata1

另外两台分别添加

slave1
slave2

或者

三台机器同时执行

hostnamectl set-hostname bigdata1

bash	# 查看更改是否生效
hostnamectl set-hostname slave1

bash	# 查看更改是否生效
hostnamectl set-hostname slave2

bash	# 查看更改是否生效
3. 设置 IP 和域名映射
vim /etc/hosts

添加内容如下,另外两台也分别添加

192.168.44.100 bigdata1
192.168.44.110 slave1 
192.168.44.120 slave2 

设置完成后,重启三台主机(用第二种方式修改主机名可不重启)

reboot
4. 关闭防火墙

三台机器同时执行

systemctl stop firewalld	# 关闭防火墙
systemctl disable firewalld	# 禁止开机启动
systemctl status firewalld	# 检查防火墙状态
5. 关闭 SELINUX

三台机器同时执行

修改 SELINUX 的配置文件

vim /etc/selinux/config

修改内容如下

# 将 SELINUX=enforcing 修改为 SELINUX=disabled
SELINUX=disabled
6. 免密登录

三台机器同时执行

ssh-keygen -t rsa	# 生成公私钥

三台机器同时执行

ssh-copy-id bigdata1	# 拷贝公钥到bigdata1

在 bigdata1 机器上使用如下命令

scp -r /root/.ssh/authorized_keys slave1:/root/.ssh
scp -r /root/.ssh/authorized_keys slave2:/root/.ssh
7. 时钟同步

三台机器同时执行

crontab -e

添加内容如下

*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;

或者

三台机器同时执行

timedatectl timezones Aisa/Shanghai
8. JDK 安装

查看自带的 openjdk 并卸载

rpm -qa | grep java	# 搜索java相关的rpm包
yum -y remove	# 卸载当前jdk的rpm包

创建安装目录

mkdir -p /export/softwares	# 软件包存放目录
mkdir -p /export/servers   # 安装目录

上传并解压

在客户端(SerT)中进行登录,用 rz -E 的命令工具进行上传,如果没有,则进行下载

yum -y install lrzsz
cd /export/softwares/
rz -E
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /export/servers	# 解压到/export/servers

将 jdk1.8.0_212 重命名为 java

cd /export/servers/

mv jdk1.8.0_212 java

配置环境变量

vim /etc/profile

添加内容如下

# JDK
export JAVA_HOME=/export/servers/java
export PATH=$PATH:$JAVA_HOME/bin

重启生效

source /etc/profile

测试是否成功安装

java -version

在 bigdata1 机器上执行如下命令

scp -r /export/servers/java/ slave1:/export/servers	# 将JDK发送给slave1
scp -r /export/servers/java/ slave2:/export/servers	# 将JDK发送给slave2
scp -r /etc/profile slave1:/etc/profile	# 将/etc/profile发送给slave1
scp -r /etc/profile slave2:/etc/profile	# 将/etc/profile发送给slave2

在 slave1 和 slave2 执行如下命令

source /etc/profile	# 重启生效

配置环境变量对当前 root 用户生效

vim /root/.bash_profile

配置环境变量对全局生效

vim /etc/profile
9. HADOOP 安装

集群规划

Bigdata1Slave1Slave2
HDFSNameNode
DataNodeDataNodeDataNode
SecondaryNameNode
YARNNodeManagerNodeManagerNodeManager
ResourceManager

上传并解压

cd /export/softwares/
rz -E
tar -zxvf hadoop-3.1.3.tar.gz -C /export/servers	# 解压到/export/servers

将 hadoop-3.1.3 重命名为 hadoop

cd /export/servers/

mv hadoop-3.1.3 hadoop

配置环境变量

vim /etc/profile

添加内容如下

# HADOOP
export HADOOP_HOME=/export/servers/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

重启生效

source /etc/profile

测试是否成功安装

hadoop version

在 bigdata1 机器上执行如下命令

scp -r /export/servers/hadoop/ slave1:/export/servers/	# 将HADOOP发送给slave1
scp -r /export/servers/hadoop/ slave2:/export/servers/	# 将HADOOP发送给slave1
scp -r /etc/profile slave1:/etc/profile	# 将/etc/profile发送给slave1
scp -r /etc/profile slave2:/etc/profile	# 将/etc/profile发送给slave2

在 slave1 和 slave2 执行如下命令

source /etc/profile	# 重启生效

进入 HADOOP 配置文件目录下

cd /export/servers/hadoop/etc/hadoop
  • 修改 hadoop-env.sh 配置文件

    vim hadoop-env.sh
    # 添加内容如下
    export JAVA_HOME=/export/servers/java
    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
    
  • 修改 core-site.xml 配置文件

    vim core-site.xml
    <!-- 添加内容如下 -->
    <configuration>
            <!-- 指定 HDFS 中 NameNode 的地址 -->
            <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://bigdata1:8020</value>
            </property>
            
            <!-- 指定 hadoop 运行时产生文件的存储目录 -->
            <property>
                    <name>hadoop.tmp.dir</name>
                    <value>/export/servers/hadoop/data</value>
            </property>
            
            <!-- 配置 HDFS 网页登录使用的静态用户为 root -->
    		<property>
    			 <name>hadoop.http.staticuser.user</name>
                 <value>root</value>
    		</property>
    </configuration>
    
  • 修改 hdfs-site.xml 配置文件

    vim hdfs-site.xml
    <!-- 添加内容如下 -->
    <configuration>
    		<!-- nn web 端访问地址-->
            <property>
                    <name>dfs.namenode.http-address</name>
                    <value>bigdata1:9870</value>
            </property>
            
            <!-- 2nn web 端访问地址-->
            <property>
                    <name>dfs.namenode.secondary.http-address</name>
                    <value>bigdata1:9868</value>
            </property>
    </configuration>
    
  • 修改 yarn-site.xml 配置文件

    vim yarn-site.xml
    <!-- 添加内容如下 -->
    <configuration>
    		<!-- 指定 MR 走 shuffle -->
            <property>
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
            </property>
    
            <!-- 指定 ResourceManager 的地址-->
            <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>bigdata1</value>
            </property>
    
            <!-- 环境变量的继承 -->
            <property>
                    <name>yarn.nodemanager.env-whitelist</name>
                	<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_C
    ONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
            </property>
    </configuration>
    
  • 修改 mapred-site.xml 配置文件

    vim mapred-site.xml
    <!-- 添加内容如下 -->
    <configuration>
    		<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
            <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
            </property>
    </configuration>
    
  • 修改 workers 配置文件

    vim workers
    # 添加内容如下
    bigdata1
    slave1
    slave2
    

在 bigdata1 机器上执行如下命令

scp -r /export/servers/hadoop/etc/hadoop/ slave1:/export/servers/hadoop/etc/	# 将HADOOP的配置文件发送给slave1
scp -r /export/servers/hadoop/etc/hadoop/ slave2:/export/servers/hadoop/etc/	# 将HADOOP的配置文件发送给slave2

启动集群

  • 在 bigdata1 机器上对 NameNode 进行格式化

    hdfs namenode -format
    
  • 启动 HDFS

    cd /export/servers/hadoop
    
    sbin/start-dfs.sh
    

    查看 HDFS 是否启动

    [root@bigdata1 hadoop]# jps
    1683 NameNode
    2053 SecondaryNameNode
    1853 DataNode
    2174 Jps
    
  • 启动 YARN

    cd /export/servers/hadoop
    
    sbin/start-yarn.sh
    

    查看 YARN 是否启动

    [root@bigdata1 hadoop]# jps
    1683 NameNode
    2053 SecondaryNameNode
    2774 Jps
    2312 ResourceManager
    2459 NodeManager
    1853 DataNode
    
  • Web 端查看 HDFS 的 NameNode

    浏览器中输入:http://192.168.44.100:9870

    查看 HDFS 上存储的数据信息

  • Web 端查看 YARN 的 ResourceManager

    浏览器中输入:http://192.168.44.100:8088

    查看 YARN 上运行的 Job 信息

配置历史服务器

cd /export/servers/hadoop/etc/hadoop
vim mapred-site.xml
<!-- 添加内容如下 -->
<configuration>
		<!-- 历史服务器端地址 -->
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>bigdata1:10020</value>
        </property>
        
        <!-- 历史服务器 web 端地址 -->
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>bigdata1:19888</value>
        </property>
</configuration>

在 bigdata1 机器上执行如下命令

scp -r /export/servers/hadoop/etc/hadoop/ slave1:/export/servers/hadoop/etc/	# 将HADOOP的配置文件发送给slave1
scp -r /export/servers/hadoop/etc/hadoop/ slave2:/export/servers/hadoop/etc/	# 将HADOOP的配置文件发送给slave2

重新启动 YARN 后在 bigdata1 机器上启动历史服务器

stop-yarn.sh
start-yarn.sh
mapred --daemon start historyserver

查看历史服务器是否启动

[root@bigdata1 ~]# jps
10689 ResourceManager
10838 NodeManager
9079 DataNode
11399 Jps
8908 NameNode
9278 SecondaryNameNode
11342 JobHistoryServer

Web 端查看 YARN 的 JobHistory

浏览器中输入:http://192.168.44.100:19888

查看 YARN 上运行的 JobHistory 信息

10. HADOOP 官方文档

在比赛期间,如果忘记了 hadoop 的配置文件该如何去写,可以用一种方法,在虚拟机上原有的 hadoop 安装包下载到我们 windows 上

cd /export/softwares

# 使用sz命令下载到Windows上
sz hadoop-3.1.3.tar.gz

查看 windows 下下载的 hadoop-3.1.3.tar.gz 压缩文件,进行解压缩,解压缩后进入 hadoop-3.1.3 文件夹

进入 hadoop-3.1.3\\share\\doc\\hadoop 这个目录下,有一个 index 的 html 文件,双击进去

里面有相关 hadoop 的配置文档供我们查看并记忆,而且这样比赛不算违规

三、Mysql 安装配置

1. 卸载系统自带的 Mariadb
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
2. 删除 etc 目录下的 my.cnf 文件
rm -rf /etc/my.cnf
3. 检查 MySQL 是否存在
rpm -qa | grep mysql

检查 mysql 组是否存在

cat /etc/group | grep mysql

检查 mysql 用户是否存在

cat /etc/passwd | grep mysql

创建 mysql 用户组

groupadd mysql

创建 mysql 用户,并将 mysql 用户添加到 mysql 用户组

useradd -g mysql mysql

为 mysql 用户指定密码为 passwd

passwd mysql
4. 上传并解压
cd /export/softwares/
rz -E
tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /export/servers	# 解压到/export/servers

将文件重命名为 mysql

cd /export/servers/
mv mysql-5.7.18-linux-glibc2.5-x86_64/ mysql

在 mysql 文件下创建 data 文件夹

cd /export/servers/mysql/
mkdir data

更改 mysql 文件夹所属的组和用户

cd /export/servers
# 更改 mysql 文件夹所属用户 
chown -R mysql mysql/
# 更改 mysql 文件夹所属用户组 
chgrp -R mysql mysql/
5. 新建配置文件 my.cnf
# 新建 my.cnf 文件
touch /etc/my.cnf 
# 编辑 my.cnf 文件
vim /etc/my.cnf

在 my.cnf 文件内添加以下配置

[mysql] 
# 设置 mysql 客户端默认字符集 
default-character-set=utf8 
[mysqld] 
# skip-name-resolve
# 设置 3306 端口 
port=3306 
# 设置 mysql 的安装目录
basedir=/export/servers/mysql/
# 设置 mysql 数据库的数据的存放目录
datadir=/export/servers/mysql/data
# 允许最大连接数 
max_connections=200 
# 服务端使用的字符集默认为 8 比特编码的 latin1 字符集 

以上是关于大数据平台环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

【大数据】使用Docker搭建Hadoop集群

基于大数据平台的毕业设计01:基于Docker的HDP集群搭建

基于Docker搭建大数据集群Docker环境部署

基于Docker搭建大数据集群Spark部署

大数据平台Hadoop的分布式集群环境搭建

基于Docker搭建大数据集群基础组件配置