大数据应用与服务环境搭建教程

大数据环境组件搭建教程

1.1 前置环境准备

需要准备好三台虚拟机,都要安装好Centos7系统,并用SSH工具连接好三台虚拟机。
推荐使用:Xshell;三台机器命名master、slave1、slave2
所需文件:Mysoft;获取到文件之后,请放入master中的根目录下
需要关闭三台机器的防火墙按顺序输入命令即可

1
2
3
firewall-cmd --state //查看防火墙状态
systemctl stop firewalld.service //停止firewall
systemctl disable firewalld.service //禁止firewall开机启动

一键关闭:
systemctl stop firewalld.service && systemctl disable firewalld.service && firewall-cmd –state

1.2 配置主机名

需要修改主机名,使用以下命令来分别修改三台主机的主机名:

  1. 对于”master”主机,你可以运行以下命令来修改主机名:

    1
    sudo hostnamectl set-hostname master
  2. 对于”slave1”主机,你可以运行以下命令来修改主机名:

    1
    sudo hostnamectl set-hostname slave1
  3. 对于”slave2”主机,你可以运行以下命令来修改主机名:

    1
    sudo hostnamectl set-hostname slave2

这些命令会将每个主机的主机名设置为相应的名称。请确保在运行这些命令时具有适当的权限(可能需要使用sudo)。修改主机名后,你需要重新启动主机以使更改生效。

1.3 配置解析文件

现在需要要在”master”主机的/etc/hosts文件中配置三台主机ip的主机名和IP解析,按照以下步骤进行操作:

  1. 使用以下命令打开/etc/hosts文件:

    1
    sudo vi /etc/hosts
  2. 在打开的文件中,将光标移动到文件的末尾。你可以按下Shift+G将光标移动到最底部,接着按下键盘上的o键,以确保在新的行数上进行编辑。

  3. 在末尾添加一行,指定主机名和对应的IP地址。例如,如果你想将”master”主机名解析为IP地址127.0.0.1,可以在末尾添加以下内容:

    1
    127.0.0.1 master
  4. 最后,按下Esc键,然后输入以下命令保存并退出vi编辑器:
    :wq

这样,你就在”master”主机的/etc/hosts文件中成功配置了主机名和IP解析。请记住,在修改/etc/hosts文件后,你可能需要重启主机或者重新加载网络配置以使更改生效。

1.4 配置免密

按顺序往下输入给master主机就可以了

1
2
3
4
5
6
7
ssh-keygen -t rsa **[打完这条命令之后一直回车即可]**

ssh-copy-id -i root@master

ssh-copy-id -i root@slave1

ssh-copy-id -i root@slave2

2.1 安装JDK

  1. 解压JDK文件:

    • 打开终端并进入/Mysoft目录。

    • 运行以下命令解压JDK文件:

      1
      tar -xzvf jdk-8u212-linux-x64.tar.gz -C /usr/local/src
  2. 添加系统变量:

    • 使用命令vi /root/.bash_profile打开.bash_profile文件。

    • 在文件末尾添加以下内容:

      1
      2
      3
      #JAVA
      export JAVA_HOME=/usr/local/src/jdk1.8.0_212
      export PATH=$PATH:$JAVA_HOME/bin
  3. 刷新环境变量:

    • 运行以下命令刷新环境变量使其生效:

      1
      2
      source /root/.bash_profile
      或者. /root/.bash_profile
  4. 检查安装是否成功:

    • 运行命令 java -version ,如果成功安装,将显示JAVA的版本号。
  5. 将JDK、环境变量和hosts文件拷贝到两台slave机器:

    • 拷贝到slave1:

      • 运行以下命令:
        1
        2
        3
        scp -r /usr/local/src/jdk1.8.0_212/ slave1:/usr/local/src/
        scp /root/.bash_profile slave1:/root/.bash_profile
        scp /etc/hosts slave1:/etc/hosts
    • 拷贝到slave2:

      • 运行以下命令:
        1
        2
        3
        scp -r /usr/local/src/jdk1.8.0_212/ slave2:/usr/local/src/
        scp /root/.bash_profile slave2:/root/.bash_profile
        scp /etc/hosts slave2:/etc/hosts
  6. 在slave1和slave2上检查JDK的安装情况:

    • 运行以下命令刷新环境变量使其生效:

      1
      2
      source /root/.bash_profile
      或者. /root/.bash_profile
    • 运行命令 java -version,如果成功安装,将显示JAVA的版本号。

3.1 安装Hadoop

  1. 解压Hadoop文件:

    • 进入/Mysoft目录。

    • 运行以下命令解压Hadoop文件:

      1
      tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local/src/
  2. 添加系统变量:

    • 使用命令vi /root/.bash_profile打开.bash_profile文件。

    • 在文件末尾添加以下内容:

      1
      2
      3
      #Hadoop
      export HADOOP_HOME=/usr/local/src/hadoop-3.1.3
      export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  3. 刷新环境变量:

    • 运行以下命令刷新环境变量使其生效:

      1
      2
      source /root/.bash_profile
      或者. /root/.bash_profile
  4. 检查安装是否成功:

    • 运行命令 hadoop version,如果成功安装,将显示Hadoop的版本号。
  5. 编辑Hadoop配置文件:

    • 进入/usr/local/src/hadoop-3.1.3**/etc/hadoop/**目录。

    • 编辑以下配置文件:

      • hdfs-site.xml
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      [root@master hadoop]# vi core-site.xml
      <configuration>
      <!-- hdfs的地址名称:schame,ip,port-->
      <property>
      <name>fs.defaultFS</name>
      <value>hdfs://master:9000</value>
      </property>
      <!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->
      <property>
      <name>hadoop.tmp.dir</name>
      <value>/root/hadoopdir/tmp</value>
      </property>
      </configuration>
      • hdfs.site.xml
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      [root@master hadoop]# vi hdfs-site.xml 
      <configuration>
      <!-- namenode守护进程管理的元数据文件fsimage存储的位置-->
      <property>
      <name>dfs.namenode.name.dir</name>
      <value>/root/hadoopdir/dfs/name</value>
      </property>
      <!-- 确定DFS数据节点应该将其块存储在本地文件系统的何处-->
      <property>
      <name>dfs.datanode.data.dir</name>
      <value>/root/hadoopdir/dfs/data</value>
      </property>
      <!-- 块的副本数-->
      <property>
      <name>dfs.replication</name>
      <value>3</value>
      </property>
      <!-- 块的大小(128M),下面的单位是字节-->
      <property>
      <name>dfs.blocksize</name>
      <value>134217728</value>
      </property>
      <!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
      <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>master:9868</value>
      </property>
      <!-- namenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
      <property>
      <name>dfs.namenode.http-address</name>
      <value>master:9870</value>
      </property>
      <!--是否开通HDFS的Web接口,3.0版本后默认端口是9870-->
      <property>
      <name>dfs.webhdfs.enabled</name>
      <value>true</value>
      </property>
      </configuration>
      • mapred-site.xml:

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
         [root@master hadoop]# vi mapred-site.xml 
        <configuration>
        <!-- 指定mapreduce使用yarn资源管理器-->
        <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        </property>
        <!-- 配置作业历史服务器的地址-->
        <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
        </property>
        <!-- 配置作业历史服务器的http地址-->
        <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
        </property>
        <!-- 为 ApplicationMaster 设置环境变量,使其能找到 Hadoop MapReduce 的安装路径 -->
        <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
        </property>
        <!-- 为每个 Map 任务设置环境变量,确保它们能加载 MapReduce 所需的库和工具 -->
        <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
        </property>
        <!-- 为每个 Reduce 任务设置环境变量,同样是指定 Hadoop MapReduce 的安装路径 -->
        <property>
        <name>mapreduce.reduce.env</name>
        <value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
        </property>
        </configuration>
      • yarn-site.xml

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
         [root@master hadoop]# vi yarn-site.xml
      <configuration>
      <!-- Site specific YARN configuration properties -->
      <!-- NodeManager获取数据的方式shuffle -->
      <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
      </property>
      <!-- 指定YARN的ResourceManager的地址 -->
      <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>master</value>
      </property>
      <!-- yarn的web访问地址 -->
      <property>
      <name>yarn.resourcemanager.webapp.address</name>
      <value>master:8088</value>
      </property>
      <property>
      <name>yarn.resourcemanager.webapp.https.address</name>
      <value>master:8090</value>
      </property>
      <!-- 开启日志聚合功能,方便我们查看任务执行完成之后的日志记录 -->
      <property>
      <name>yarn.log-aggregation-enable</name>
      <value>true</value>
      </property>
      <!-- 设置聚合日志在hdfs上的保存时间 -->
      <property>
      <name>yarn.log-aggregation.retain-seconds</name>
      <value>604800</value>
      </property>
      </configuration>
      • workers (删除”localhost”并替换为以下内容)
      1
      2
      3
      master
      slave1
      slave2
      • hadoop-env.sh (在文件末尾添加配置)
      1
      2
      3
      4
      5
      6
      export JAVA_HOME=/root/software/jdk
      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

  1. 将Hadoop和环境变量传输到两台slave机器:

    • 拷贝到slave1:

      • 运行以下命令:
        1
        2
        scp -r /usr/local/src/hadoop-3.1.3/ slave1:/usr/local/src
        scp /root/.bash_profile slave1:/root/.bash_profile
    • 拷贝到slave2:

      • 运行以下命令:
        1
        2
        scp -r /usr/local/src/hadoop-3.1.3/ slave2:/usr/local/src
        scp /root/.bash_profile slave2:/root/.bash_profile
  2. 刷新两台slave机器的变量:

    • 运行以下命令刷新环境变量使其生效:
      1
      2
      source /root/.bash_profile
      或者. /root/.bash_profile
  3. 格式化HDFS(master):

    • 命令 hdfs namenode -format
  4. 启动Hadoop(master):

    • 命令start-all.sh

      完成后,运行jps命令,如果显示6个进程,则表示安装成功。

4.1 安装MySQL

  1. 解压MySQL文件:

    • 进入/Mysoft目录。
    • 运行以下命令解压MySQL文件:
    1
    tar -xvf mysql-5.7.42-1.el7.x86_64.rpm-bundle.tar
    • 解压后的文件将放置在/Mysoft目录中。
  2. 使用yum安装MySQL:

    • 运行以下命令安装MySQL:
    1
    yum -y install mysql-community-{server,client,common,libs}-*
  3. 启动MySQL服务:

    • 设置MySQL开机自启动:systemctl enable mysqld.service
    • 启动MySQL服务:systemctl start mysqld.service
    • 检查MySQL服务是否成功启动:systemctl status mysqld.service(绿色标志表示启动成功)

一键:
systemctl enable mysqld.service && systemctl start mysqld.service && systemctl status mysqld.service

  1. 获取MySQL初始密码:
    • 有两种方法可以获取初始密码:
      • 第一种方法:查看日志文件:cat /var/log/mysql.log | grep password
      • 第二种方法:查找日志文件:grep "password is generated" /var/log/mysqld.log | awk '{print $NF}'
  2. 初始化密码:
    • 命令mysql_secure_installation进行密码初始化。
    • 输入初始密码,然后输入新的密码(例如:Mysql123..),再次输入新密码确认。
    • 接下来,按照提示依次选择y/n进行相关设置,按照顺序选择y y n y y
  3. 进入MySQL并设置权限:
    • 在MySQL shell中键入以下命令:
      grant all privileges on *.* to '用户名'@'%' identified by '登录密码' with grant option; flush privileges;
    • 将’用户名’替换为您要创建的MySQL用户名,将’登录密码’替换为您要设置的登录密码。

5.1 安装Hive

  1. 解压Hive文件并重命名:

    • 进入/Mysoft目录。
    • 运行以下命令解压Hive文件:
    1
    tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /usr/local/src
    • 进入解压后的目录:cd /usr/local/src
    • 将解压后的文件夹重命名为hive:mv apache-hive-3.1.2-bin hive
  2. 添加系统变量:

    • 使用命令vi /root/.bash_profile打开**.bash_profile**文件。
    • 在文件末尾添加以下内容:
      1
      2
      3
      # Hive
      export HIVE_HOME=/usr/local/src/hive
      export PATH=$PATH:$HIVE_HOME/bin
  3. 刷新环境变量:

    • 运行以下命令刷新环境变量使其生效:
      1
      2
      source /root/.bash_profile
      或者. /root/.bash_profile
  4. 创建Hive配置文件:

    • 进入Hive的conf目录:cd /usr/local/src/hive/conf
    • 编辑hive-site.xml配置文件,将其中的内容进行修改。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      <configuration>
      <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>root</value>
      </property>
      <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>123456</value>
      </property>
      <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://master:3306/myhive1?createDatabaseIfNotExist=true</value>
      </property>
      <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
      </property>
      </configuration>
  5. 将Java连接MySQL的驱动包拷贝到Hive的lib目录下:

    • 运行以下命令将MySQL的驱动包拷贝到Hive的lib目录下:
      1
      cp /mysort/mysql-connector-java-5.1.37.jar /usr/local/src/hive/lib/
  6. 处理包冲突,替换Hive中的Guava:

    • 在Hive的根目录下执行以下命令:
      1
      2
      rm lib/guava-19.0.jar
      cp /usr/local/src/hadoop-3.1.3/share/hadoop/common/lib/guava-27.0-jre.jar /usr/local/src/hive/lib/
  7. 初始化MySQL的数据架构:

    • 运行以下命令初始化MySQL的数据架构:

      1
      schematool -dbType mysql -initSchema
    • 确保出现提示消息"Initialization script completed",表示初始化成功。

  8. 校验Hive安装:

    • 确保Hadoop已经启动。
    • 运行命令hive进入Hive shell。
    • 在Hive shell中,输入show databases;,如果能够看到输出结果,则表示Hive安装成功。

6.1 安装ZooKeeper

  1. 解压ZooKeeper文件并重命名:

    • 进入/Mysoft目录。
    • 运行以下命令解压ZooKeeper文件:
    1
    tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /usr/local/src
    • 进入解压后的目录:cd /usr/local/src
    • 将解压后的文件夹重命名为zookeeper:mv apache-zookeeper-3.5.7-bin zookeeper
  2. 添加系统变量:

    • 使用命令vi /root/.bash_profile打开.bash_profile文件。
    • 在文件末尾添加以下内容:
      1
      2
      3
      # ZooKeeper
      export ZOOKEEPER_HOME=/usr/local/src/zookeeper
      export PATH=$PATH:$ZOOKEEPER_HOME/bin
  3. 刷新环境变量:

    • 运行以下命令刷新环境变量使其生效:
      1
      2
      source /root/.bash_profile
      或者. /root/.bash_profile
  4. 修改ZooKeeper配置文件:

    • 进入ZooKeeper的conf目录:cd /usr/local/src/zookeeper/conf
    • zoo_sample.cfg文件重命名为zoo.cfg,然后编辑zoo.cfg文件
    • 修改以下配置项:
      1
      2
      3
      4
      5
      dataDir=/usr/local/src/zookeeper/data
      dataLogDir=/usr/local/src/zookeeper/logs
      server.1=master:2888:3888
      server.2=slave1:2888:3888
      server.3=slave2:2888:3888
  5. 创建数据目录和日志目录,并初始化ID:

    • 返回到ZooKeeper的根目录:cd ..
    • 创建data和logs目录:mkdir data logs
    • 在data目录下创建一个名为myid的文件,并将其内容设置为:echo 1 > /usr/local/src/zookeeper/data/myid
  6. 将配置好的ZooKeeper和环境变量拷贝到slave1和slave2机器:

    • 使用scp命令将ZooKeeper文件夹和.bash_profile文件拷贝到slave1和slave2机器上,示例命令如下:
      1
      2
      3
      4
      scp -r /usr/local/src/zookeeper/ slave1:/usr/local/src
      scp -r /usr/local/src/zookeeper/ slave2:/usr/local/src
      scp /root/.bash_profile slave1:/root/
      scp /root/.bash_profile slave2:/root/
  7. 修改对应机器的myid文件:

    • 在slave1机器上:echo 2 > /usr/local/src/zookeeper/data/myid
    • 在slave2机器上:echo 3 > /usr/local/src/zookeeper/data/myid
  8. 在三台机器上分别启动ZooKeeper服务:

    • 分别在三台机器上运行命令 zkServer.sh start
  9. 检查ZooKeeper状态:

    • 启动完毕后,分别在每台机器上运行命令 zkServer.sh status ,查看状态。
    • 应该会显示一个Leader和两个Follower的状态,表示安装的ZooKeeper集群配置正确。

7.1 安装HBase

  1. 解压HBase文件并重命名:

    • 进入/Mysoft目录。
    • 运行以下命令解压HBase文件:tar -zxvf hbase-2.2.3-bin.tar.gz -C /usr/local/src/
    • 进入解压后的目录:cd /usr/local/src
    • 将解压后的文件夹重命名为hbase:mv hbase-2.2.3 hbase
  2. 添加系统变量:

    • 使用命令vi /root/.bash_profile打开**.bash_profile**文件。
    • 在文件末尾添加以下内容:
      1
      2
      3
      # HBase
      export HBASE_HOME=/usr/local/src/hbase
      export PATH=$PATH:$HBASE_HOME/bin
  3. 刷新环境变量:

    • 运行以下命令刷新环境变量使其生效:
      1
      2
      source /root/.bash_profile
      或者. /root/.bash_profile
  4. 修改HBase配置文件:

    • 进入HBase的conf目录:cd /usr/local/src/hbase/conf

    • 编辑hbase-env.sh文件:

      1
      2
      export JAVA_HOME=/usr/local/src/jdk1.8.0_212
      export HBASE_MANAGES_ZK=false
    • 编辑hbase-site.xml文件:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      <configuration>
      <property>
      <name>hbase.rootdir</name>
      <value>hdfs://master:9000/hbase</value>
      </property>
      <property>
      <name>hbase.cluster.distributed</name>
      <value>true</value>
      </property>
      <property>
      <name>hbase.zookeeper.quorum</name>
      <value>master,slave1,slave2</value>
      </property>
      <property>
      <name>hbase.unsafe.stream.capability.enforce</name>
      <value>false</value>
      </property>
      </configuration>

      编辑regionservers文件:

      1
      2
      slave1
      slave2
  5. 将配置好的HBase和环境变量拷贝到slave1和slave2机器:

    • 使用scp命令将HBase文件夹和.bash_profile文件拷贝到slave1和slave2机器上,示例命令如下:
      1
      2
      3
      4
      scp -r /usr/local/src/hbase/ slave1:/usr/local/src
      scp -r /usr/local/src/hbase/ slave2:/usr/local/src
      scp /root/.bash_profile slave1:/root/
      scp /root/.bash_profile slave2:/root/
  6. 启动HBase服务:

    • 运行命令start-hbase.sh启动HBase服务
  7. 检查HBase安装:

    • 在每台机器上运行jps命令,检查是否有HMasterHRegionServer进程,如果有则表示启动成功。
    • 运行hbase shell命令进入HBase命令行,如果显示hbase(main):001:0,表示成功进入HBase命令行界面。
    • 输入list_namespace命令,如果显示defaulthbase两个namespace,则安装成功
  1. 解压Flink文件并重命名:

    • 进入/Mysoft目录。
    • 运行以下命令解压Flink文件:tar -zxvf flink-1.14.0-bin-scala_2.12.tgz -C /usr/local/src
    • 进入解压后的目录:cd /usr/local/src
    • 将解压后的文件夹重命名为flink:mv flink-1.14.0/ flink
  2. 添加系统变量:

    • 使用命令vi /root/.bash_profile打开**.bash_profile**文件。
    • 在文件末尾添加以下内容:
      1
      2
      3
      # Flink
      export FLINK_HOME=/usr/local/src/flink
      export PATH=$PATH:$FLINK_HOME/bin
  3. 刷新环境变量:

    • 运行以下命令刷新环境变量使其生效:
      1
      2
      source /root/.bash_profile
      或者. /root/.bash_profile
  4. 修改Flink配置文件:

    • 进入Flink的conf目录:cd /usr/local/src/flink/conf

    • 编辑flink-conf.yaml文件,找到jobmanager.rpc.address行,将其值设置为master(注意冒号后的空格)。

      jobmanager.rpc.address: master

    • 找到classloader.check-leaked-classloader行,将其值设置为false

      classloader.check-leaked-classloader: false

  5. 修改workers文件:

    • 使用命令vi workers打开文件。
    • 在文件中按行添加所有节点的主机名,每行一个。
      1
      2
      3
      master
      slave1
      Slave2
  6. 将配置好的Flink和环境变量拷贝到slave1和slave2机器:

    • 使用scp命令将Flink文件夹和.bash_profile文件拷贝到slave1和slave2机器上,示例命令如下:
      1
      2
      3
      4
      scp -r /usr/local/src/flink/ slave1:/usr/local/src
      scp -r /usr/local/src/flink/ slave2:/usr/local/src
      scp /root/.bash_profile slave1:/root/
      scp /root/.bash_profile slave2:/root/
  7. 启动Flink集群:

    • 运行命令start-cluster.sh启动Flink集群,输出三个机器的starting即可
    • 确保每个节点上都显示"Starting StandaloneSessionClusterEntrypoint"和"Starting TaskManagerRunner"
  8. 检查安装:

    • 运行jps命令,检查master节点上是否有StandaloneSessionClusterEntrypointTaskManagerRunner进程,确认启动成功。
    • 在浏览器中访问master节点的8081端口,检查是否能够看到Flink的Web管理界面。
  9. 运行任务:

    • 运行以下命令来运行内置的测试案例(请注意截图以供比赛使用):

      内置的案例在flink目录下的examples目录里,需要关注batch(批处理)和streaming(流处理)目录

      • 跑batch(批处理)案例的方式:
        • Flink on YARN模式(无需启动Flink集群,但需要启动Hadoop):
          • stop-cluster.sh
          • start-all.sh
          • export HADOOP_CLASSPATH=’hadoop classpath’(注意这里的单引号是反引号)
          • flink run -m yarn-cluster /usr/local/src/flink/examples/batch/WordCount.jar
        • Flink集群模式(需要启动Flink集群,无需启动Hadoop):
          • start-cluster.sh
          • flink run /usr/local/src/flink/examples/batch/WordCount.jar
            • WordCount的运行结果是输出一堆(单词,数量)就对了
      • 跑streaming(流处理)案例的方式:
        • 在一个新的SSH会话中运行nc -l -p 18888命令
          • 如果nc命令未找到,可以使用 yum install nc 安装
        • 在原来的SSH会话中运行以下命令来运行流处理案例:
          flink run /usr/local/src/flink/examples/streaming/SocketWindowWordCount.jar –hostname master –port 18888
        • 在新打开的nc_SSH会话中,输入一些单词,例如:jack tom jack jack smith love love help word。
        • 然后,在浏览器中打开Flink的Web管理界面,在”Task Manager”中逐个展开节点,查看”stdout”,找到有输出内容的节点,并进行截图。
        • 完成截图后,记得取消任务(Running Job -> Cancel)

9.1 安装Spark

  1. 解压Spark文件并重命名:

    • 进入/Mysoft目录。
    • 运行以下命令解压Spark文件:tar -zxvf spark-3.1.1-bin-hadoop3.2.tgz -C /usr/local/src
    • 进入解压后的目录:cd /usr/local/src
    • 将解压后的文件夹重命名为spark:mv spark-3.1.1-bin-hadoop3.2/ spark
  2. 添加系统变量:

    • 使用命令vi /root/.bash_profile打开.bash_profile文件。
    • 在文件末尾添加以下内容:
      1
      2
      3
      # Spark
      export SPARK_HOME=/usr/local/src/spark
      export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
  3. 刷新环境变量:

    • 运行以下命令刷新环境变量使其生效:
      1
      2
      source /root/.bash_profile
      或者. /root/.bash_profile
  4. 修改Spark配置文件:

    • 进入Spark的conf目录:cd /usr/local/src/spark/conf(如果没有就手动添加)
    • 编辑spark-env.sh文件,找到export JAVA_HOME行,将其值设置为/usr/local/src/jdk1.8.0_212
    • 找到export SPARK_MASTER_HOST行,将其值设置为master
    • 找到export SPARK_MASTER_PORT行,将其值设置为7077
    • 找到export SPARK_CONF_DIR行,将其值设置为/usr/local/src/spark/conf
    • 找到export HADOOP_CONF_DIR行,将其值设置为/usr/local/src/hadoop-3.1.3/etc/hadoop
      1
      2
      3
      4
      5
      export JAVA_HOME=/usr/local/src/jdk1.8.0_212
      export SPARK_MASTER_HOST=master
      export SPARK_MASTER_PORT=7077
      export SPARK_CONF_DIR=/usr/local/src/spark/conf
      export HADOOP_CONF_DIR=/usr/local/src/hadoop-3.1.3/etc/hadoop/
  5. 修改workers文件:

    • 使用命令vi workers打开文件。
    • 在文件中按行添加所有节点的主机名,每行一个。
      1
      2
      3
      master
      slave1
      slave2
  6. 将配置好的Spark和环境变量拷贝到slave1和slave2机器:

    • 使用scp命令将Spark文件夹和.bash_profile文件拷贝到slave1和slave2机器上,示例命令如下:

      1
      2
      3
      4
      scp -r /usr/local/src/spark/ slave1:/usr/local/src
      scp -r /usr/local/src/spark/ slave2:/usr/local/src
      scp /root/.bash_profile slave1:/root/
      scp /root/.bash_profile slave2:/root/
  7. 启动Spark集群:

    • 将MySQL的JDBC驱动拷贝到Spark的jars目录:

      1
      cp /mysort/mysql-connector-java-5.1.37.jar /usr/local/src/spark/jars/
    • 进入Spark的sbin目录:cd /usr/local/src/spark/sbin

    • 运行./start-all.sh启动Spark集群。

      • 一定要进来了再运行,要不启动的是hadoop
  8. 检查安装:

    • 运行jps命令,检查master节点上是否有MasterWorker进程,确认启动成功。
    • 在浏览器中访问master节点的8080端口,检查是否能够看到Spark的Web界面。
  9. 运行任务:

    • 接下来需要运行内置的测试案例来验证Spark是否正常工作(请注意截图以供比赛使用):
      • 对于Spark on YARN模式(Spark集群无需启动,但需要启动Hadoop):
        • 运行以下命令:
          spark-submit –master yarn –class org.apache.spark.examples.SparkPi /usr/local/src/spark/examples/jars/spark-examples_2.12-3.1.1.jar 100
      • 对于Spark集群模式(Spark集群需启动,Hadoop无需启动):
        • 运行以下命令:
          spark-submit –master spark://master:7077 –class org.apache.spark.examples.SparkPi /usr/local/src/spark/examples/jars/spark-examples_2.12-3.1.1.jar 100
      • 运行的输出结果类似于”Pi is roughly 3.142xxxxxxxxx”,表示运行成功。请确保比赛截图包含前后几行输出内容。
      • 补充说明:运行spark/bin目录下的spark-shell可以进入spark的命令行。

10.1 安装Flume

  1. 解压Flume文件并重命名:

    • 进入/Mysoft目录。
    • 运行以下命令解压Flume文件:tar -xzvf apache-flume-1.9.0-bin.tar.gz -C /usr/local/src/
    • 进入解压后的目录:·cd /usr/local/src
    • 将解压后的文件夹重命名为flume:·mv apache-flume-1.9.0-bin flume·
  2. 添加系统变量:

    • 使用命令·vi /root/.bash_profile·打开**.bash_profile**文件。
    • 在文件末尾添加以下内容:
      1
      2
      3
      # Flume
      export FLUME_HOME=/usr/local/src/flume
      export PATH=$PATH:$FLUME_HOME/bin
  3. 刷新环境变量:

    • 运行以下命令刷新环境变量使其生效:
      1
      2
      source /root/.bash_profile
      或者. /root/.bash_profile
  4. 配置采集器:

    • 进入Flume的conf目录:cd /usr/local/src/flume/conf

    • 创建并编辑port.conf文件,配置网络监听的内容。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      #定义采集器的组件名(a1,r1,c1,k1都是自己起的名字)
      a1.sources=r1
      a1.channels=c1
      a1.sinks=k1
      #数据来源(网络端口)
      a1.sources.r1.type=netcat
      a1.sources.r1.bind=master
      a1.sources.r1.port=18888
      #数据缓存到内存
      a1.channels.c1.type=memory
      #数据的目的地,先测试输出到控制台,后面还要改为输出到kafka
      a1.sinks.k1.type=logger
      #绑定他们的关联
      a1.sources.r1.channels=c1
      a1.sinks.k1.channel=c1
    • 创建并编辑file.conf文件,配置文件变化的内容。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      #定义采集器的组件名
      a2.sources=r2
      a2.channels=c2
      a2.sinks=k2
      #数据来源(文件变化)
      a2.sources.r2.type=exec
      a2.sources.r2.command=tail -F /tmp/test.txt
      #数据缓存到内存
      a2.channels.c2.type=memory
      #数据的目的地,先测试输出到控制台,后面还要改为输出到kafka
      a2.sinks.k2.type=logger
      #绑定他们的关联
      a2.sources.r2.channels=c2
      a2.sinks.k2.channel=c2
  5. 启动Flume测试:

    • 测试网络监听:
      • 运行以下命令启动Flume采集器:
        flume-ng agent -c conf -f /usr/local/src/flume/conf/port.conf –name a1 -Dflume.root.logger=INFO,console
      • 从任意一台机器,使用nc命令连接到master节点的18888端口:nc master 18888
      • 输入一些内容并按回车键,观察master节点的Flume是否接收到数据。
    • 测试文件变化:
      • 运行以下命令启动Flume采集器:
      • flume-ng agent -c conf -f /usr/local/src/flume/conf/file.conf –name a2 -Dflume.root.logger=INFO,console
      • 在另外一个SSH连接中登录到master节点,运行echo “test” >> /tmp/test.txt,观察Flume是否检测到文件变化。

11.1 安装Kafka

  1. 解压Kafka文件并重命名:

    • 进入/Mysoft目录。
    • 运行以下命令解压Kafka文件:tar -xzvf kafka_2.12-2.4.1.tgz -C /usr/local/src/
    • 进入解压后的目录:cd /usr/local/src/
    • 将解压后的文件夹重命名为kafka:mv kafka_2.12-2.4.1/ kafka
  2. 添加系统变量:

    • 使用命令vi /root/.bash_profile打开**.bash_profile**文件。
    • 在文件末尾添加以下内容:
      1
      2
      3
      # Kafka
      export KAFKA_HOME=/usr/local/src/kafka
      export PATH=$PATH:$KAFKA_HOME/bin
  3. 刷新环境变量:

    • 运行以下命令刷新环境变量使其生效:
      1
      2
      source /root/.bash_profile
      或者. /root/.bash_profile
  4. 配置Kafka:

    • 进入Kafka的config目录:cd /usr/local/src/kafka/config

    • 编辑server.properties文件(master、slave1和slave2都要编辑)。

    • 修改以下配置项:

      1
      2
      3
      4
      5
      6
      broker.id=1 (master是1,slave1是2,slave2是3)
      hostname=172.16.x.x(分别是各个机器的IP)
      zookeeper.connect=master:2181,slave1:2181,slave2:2181
      listeners=PLAINTEXT://0.0.0.0:9092
      advertised.listeners=PLAINTEXT://172.16.x.x:9092(分别是各个机器的IP)
      advertised.host.name=master(分别是各个机器的机器名)
    • 保存并关闭文件。

  5. 将配置好的Kafka和环境变量复制到slave1和slave2:

    • 运行以下命令将Kafka复制到slave1和slave2:

      1
      2
      3
      4
      scp -r /usr/local/src/kafka/ slave1:/usr/local/src
      scp -r /usr/local/src/kafka/ slave2:/usr/local/src
      scp /root/.bash_profile slave1:/root/
      scp /root/.bash_profile slave2:/root/
    • 分别修改两台slave上的server.properties文件。

  6. 启动Kafka:

    • 确保ZooKeeper正常运行(三台机器都要运行)。
    • 运行以下命令启动Kafka(分别在master、slave1和slave2上执行):
      kafka-server-start.sh -daemon /usr/local/src/kafka/config/server.properties
    • 启动后,运行jps命令,查看是否有kafkaQuorumPeerMain进程(QuorumPeerMain是ZooKeeper的进程)。

12.1 安装ClickHouse

  1. 解压ClickHouse文件并安装:

    • 进入/Mysoft目录。

    • 依次解压clickhouse-common-static-21.9.6.24.tgz

    • clickhouse-client-21.9.6.24.tgz和clickhouse-server-21.9.6.24.tgz文件到/tmp目录:

      1
      2
      3
      tar -zxvf clickhouse-common-static-21.9.6.24.tgz -C /tmp
      tar -zxvf clickhouse-client-21.9.6.24.tgz -C /tmp
      tar -zxvf clickhouse-server-21.9.6.24.tgz -C /tmp
    • 运行以下命令安装clickhouse-common和clickhouse-client:

      1
      2
      sh /tmp/clickhouse-common-static-21.9.6.24/install/doinst.sh
      sh /tmp/clickhouse-client-21.9.6.24/install/doinst.sh
    • 运行以下命令安装clickhouse-server:

      1
      sh /tmp/clickhouse-server-21.9.6.24/install/doinst.sh
    • 在运行第三个命令后,会要求设置默认用户的密码,请根据比赛要求输入密码。然后会询问是否允许远程连接,输入y。

    • 安装完成后,为了后续配置方便,给相关文件夹赋予777权限:

      1
      chmod -R 777 /var/lib/clickhouse/ /var/log/clickhouse-server/ /etc/clickhouse-server/ /etc/clickhouse-client/
  2. 修改配置文件:

    • 使用命令vi /etc/clickhouse-server/config.xml打开config.xml文件

    • 修改以下配置项(去掉注释并修改内容):

      1
      2
      3
      <listen_host>::</listen_host>
      <timezone>Asia/Shanghai</timezone>
      <tcp_port>9002</tcp_port>
    • 可以使用/命令在vi编辑器中查找对应行。

  3. 启动ClickHouse:

    • 运行以下命令启用ClickHouse服务:
      1
      2
      systemctl enable clickhouse-server
      systemctl start clickhouse-server
  4. 检查安装:

    • 启动后,使用以下命令连接到ClickHouse数据库:
      clickhouse-client -h 172.16.x.x --port 9002 -u default --password youpassword
      (请将你设置的密码替换为您在安装过程中设置的密码)
    • 如果成功连接到数据库,会显示Connected to ClickHouse server,并出现:)提示符/出现master:就是成功了。
    • 您可以输入show databases;命令查看数据库列表。
  5. 特殊情况:如果您忘记了密码:

    • ClickHouse用户信息存储在配置文件/etc/clickhouse-server/users.xml中。
    • 您可以使用以下命令生成加密后的密码(使用SHA256算法):
      echo -n 密码 | sha256sum | tr -d ‘-‘
      (请将密码替换为您要设置的新密码)
    • 使用vi命令编辑/etc/clickhouse-server/users.xml文件。
    • 使用/命令查找密码位置,注释掉旧密码,并添加新密码的SHA256哈希值:
      新密码的SHA256哈希值
      (请将新密码的SHA256哈希值替换为您生成的新密码的SHA256哈希值)
    • 如果您记得密码,可以跳过此步骤。

13.1 安装Redis

  1. 环境准备:

    • 解压Redis压缩包到/usr/local/src/目录:
      1
      2
      3
      4
      5
      6
      7
      8
      # 解压Redis
      tar -xzvf redis-6.2.6.tar.gz -C /usr/local/src/

      # 切换目录
      cd /usr/local/src/

      # 将Redis重命名
      mv redis-6.2.6/ redis
  2. 安装编译环境:

    • 安装必要的编译工具和库:
      1
      yum install -y gcc automake autoconf libtool make
  3. 编译:

    • 进入Redis源代码目录:
      cd redis/src
    • 运行以下命令进行编译和安装,指定安装路径为/usr/redis:
      make PREFIX=/usr/redis install
  4. 启动:

    • 使用默认配置文件启动Redis服务器:
      /usr/redis/bin/redis-server /root/software/redis/redis.conf >> /dev/null &
  5. 检查:

    • 启动后,可以使用以下命令连接到Redis服务器进行测试:
      cd /usr/redis/bin/
      ./redis-cli
    • 如果成功连接到Redis服务器,会显示127.0.0.1:6379>。
  6. 添加变量

    • 使用命令vi /root/.bash_profile打开**.bash_profile**文件。
    • 在文件末尾添加以下内容:
      1
      2
      3
      # Redis
      export Redis_HOME=/usr/redis/bin
      export PATH=$PATH:$Redis_HOME/bin

至此,结束环境搭建