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

大数据应用与服务环境搭建教程
叶小楠大数据环境组件搭建教程
1.1 前置环境准备
需要准备好三台虚拟机,都要安装好Centos7系统,并用SSH工具连接好三台虚拟机。
推荐使用:Xshell;三台机器命名master、slave1、slave2
所需文件:Mysoft;获取到文件之后,请放入master中的根目录下
需要关闭三台机器的防火墙按顺序输入命令即可
1 | firewall-cmd --state //查看防火墙状态 |
一键关闭:
systemctl stop firewalld.service && systemctl disable firewalld.service && firewall-cmd –state
1.2 配置主机名
需要修改主机名,使用以下命令来分别修改三台主机的主机名:
对于”master”主机,你可以运行以下命令来修改主机名:
1
sudo hostnamectl set-hostname master
对于”slave1”主机,你可以运行以下命令来修改主机名:
1
sudo hostnamectl set-hostname slave1
对于”slave2”主机,你可以运行以下命令来修改主机名:
1
sudo hostnamectl set-hostname slave2
这些命令会将每个主机的主机名设置为相应的名称。请确保在运行这些命令时具有适当的权限(可能需要使用sudo)。修改主机名后,你需要重新启动主机以使更改生效。
1.3 配置解析文件
现在需要要在”master”主机的/etc/hosts文件中配置三台主机ip的主机名和IP解析,按照以下步骤进行操作:
使用以下命令打开/etc/hosts文件:
1
sudo vi /etc/hosts
在打开的文件中,将光标移动到文件的末尾。你可以按下Shift+G将光标移动到最底部,接着按下键盘上的o键,以确保在新的行数上进行编辑。
在末尾添加一行,指定主机名和对应的IP地址。例如,如果你想将”master”主机名解析为IP地址127.0.0.1,可以在末尾添加以下内容:
1
127.0.0.1 master
最后,按下Esc键,然后输入以下命令保存并退出vi编辑器:
:wq
这样,你就在”master”主机的/etc/hosts文件中成功配置了主机名和IP解析。请记住,在修改/etc/hosts文件后,你可能需要重启主机或者重新加载网络配置以使更改生效。
1.4 配置免密
按顺序往下输入给master主机就可以了
1 | ssh-keygen -t rsa **[打完这条命令之后一直回车即可]** |
2.1 安装JDK
解压JDK文件:
打开终端并进入/Mysoft目录。
运行以下命令解压JDK文件:
1
tar -xzvf jdk-8u212-linux-x64.tar.gz -C /usr/local/src
添加系统变量:
使用命令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
刷新环境变量:
运行以下命令刷新环境变量使其生效:
1
2source /root/.bash_profile
或者. /root/.bash_profile
检查安装是否成功:
- 运行命令
java -version,如果成功安装,将显示JAVA的版本号。
- 运行命令
将JDK、环境变量和hosts文件拷贝到两台slave机器:
拷贝到slave1:
- 运行以下命令:
1
2
3scp -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
3scp -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
- 运行以下命令:
在slave1和slave2上检查JDK的安装情况:
运行以下命令刷新环境变量使其生效:
1
2source /root/.bash_profile
或者. /root/.bash_profile运行命令
java -version,如果成功安装,将显示JAVA的版本号。
3.1 安装Hadoop
解压Hadoop文件:
进入/Mysoft目录。
运行以下命令解压Hadoop文件:
1
tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local/src/
添加系统变量:
使用命令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
刷新环境变量:
运行以下命令刷新环境变量使其生效:
1
2source /root/.bash_profile
或者. /root/.bash_profile
检查安装是否成功:
- 运行命令
hadoop version,如果成功安装,将显示Hadoop的版本号。
- 运行命令
编辑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
3master
slave1
slave2- hadoop-env.sh (在文件末尾添加配置)
1
2
3
4
5
6export 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
将Hadoop和环境变量传输到两台slave机器:
拷贝到slave1:
- 运行以下命令:
1
2scp -r /usr/local/src/hadoop-3.1.3/ slave1:/usr/local/src
scp /root/.bash_profile slave1:/root/.bash_profile
- 运行以下命令:
拷贝到slave2:
- 运行以下命令:
1
2scp -r /usr/local/src/hadoop-3.1.3/ slave2:/usr/local/src
scp /root/.bash_profile slave2:/root/.bash_profile
- 运行以下命令:
刷新两台slave机器的变量:
- 运行以下命令刷新环境变量使其生效:
1
2source /root/.bash_profile
或者. /root/.bash_profile
- 运行以下命令刷新环境变量使其生效:
格式化HDFS(master):
- 命令
hdfs namenode -format。
- 命令
启动Hadoop(master):
命令
start-all.sh。完成后,运行
jps命令,如果显示6个进程,则表示安装成功。
4.1 安装MySQL
解压MySQL文件:
- 进入/Mysoft目录。
- 运行以下命令解压MySQL文件:
1
tar -xvf mysql-5.7.42-1.el7.x86_64.rpm-bundle.tar
- 解压后的文件将放置在/Mysoft目录中。
使用yum安装MySQL:
- 运行以下命令安装MySQL:
1
yum -y install mysql-community-{server,client,common,libs}-*
启动MySQL服务:
- 设置MySQL开机自启动:
systemctl enable mysqld.service - 启动MySQL服务:
systemctl start mysqld.service - 检查MySQL服务是否成功启动:
systemctl status mysqld.service(绿色标志表示启动成功)
- 设置MySQL开机自启动:
一键:
systemctl enable mysqld.service && systemctl start mysqld.service && systemctl status mysqld.service
- 获取MySQL初始密码:
- 有两种方法可以获取初始密码:
- 第一种方法:查看日志文件:
cat /var/log/mysql.log | grep password - 第二种方法:查找日志文件:
grep "password is generated" /var/log/mysqld.log | awk '{print $NF}'
- 第一种方法:查看日志文件:
- 有两种方法可以获取初始密码:
- 初始化密码:
- 命令
mysql_secure_installation进行密码初始化。 - 输入初始密码,然后输入新的密码(例如:Mysql123..),再次输入新密码确认。
- 接下来,按照提示依次选择y/n进行相关设置,按照顺序选择y y n y y
- 命令
- 进入MySQL并设置权限:
- 在MySQL shell中键入以下命令:
grant all privileges on *.* to '用户名'@'%' identified by '登录密码' with grant option; flush privileges; - 将’用户名’替换为您要创建的MySQL用户名,将’登录密码’替换为您要设置的登录密码。
- 在MySQL shell中键入以下命令:
5.1 安装Hive
解压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
添加系统变量:
- 使用命令
vi /root/.bash_profile打开**.bash_profile**文件。 - 在文件末尾添加以下内容:
1
2
3# Hive
export HIVE_HOME=/usr/local/src/hive
export PATH=$PATH:$HIVE_HOME/bin
- 使用命令
刷新环境变量:
- 运行以下命令刷新环境变量使其生效:
1
2source /root/.bash_profile
或者. /root/.bash_profile
- 运行以下命令刷新环境变量使其生效:
创建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>
- 进入Hive的conf目录:
将Java连接MySQL的驱动包拷贝到Hive的lib目录下:
- 运行以下命令将MySQL的驱动包拷贝到Hive的lib目录下:
1
cp /mysort/mysql-connector-java-5.1.37.jar /usr/local/src/hive/lib/
- 运行以下命令将MySQL的驱动包拷贝到Hive的lib目录下:
处理包冲突,替换Hive中的Guava:
- 在Hive的根目录下执行以下命令:
1
2rm 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/
- 在Hive的根目录下执行以下命令:
初始化MySQL的数据架构:
运行以下命令初始化MySQL的数据架构:
1
schematool -dbType mysql -initSchema
确保出现提示消息
"Initialization script completed",表示初始化成功。
校验Hive安装:
- 确保Hadoop已经启动。
- 运行命令
hive进入Hive shell。 - 在Hive shell中,输入
show databases;,如果能够看到输出结果,则表示Hive安装成功。
6.1 安装ZooKeeper
解压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
添加系统变量:
- 使用命令vi /root/.bash_profile打开.bash_profile文件。
- 在文件末尾添加以下内容:
1
2
3# ZooKeeper
export ZOOKEEPER_HOME=/usr/local/src/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
刷新环境变量:
- 运行以下命令刷新环境变量使其生效:
1
2source /root/.bash_profile
或者. /root/.bash_profile
- 运行以下命令刷新环境变量使其生效:
修改ZooKeeper配置文件:
- 进入ZooKeeper的conf目录:
cd /usr/local/src/zookeeper/conf - 将
zoo_sample.cfg文件重命名为zoo.cfg,然后编辑zoo.cfg文件。 - 修改以下配置项:
1
2
3
4
5dataDir=/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
- 进入ZooKeeper的conf目录:
创建数据目录和日志目录,并初始化ID:
- 返回到ZooKeeper的根目录:
cd .. - 创建data和logs目录:
mkdir data logs - 在data目录下创建一个名为myid的文件,并将其内容设置为:
echo 1 > /usr/local/src/zookeeper/data/myid
- 返回到ZooKeeper的根目录:
将配置好的ZooKeeper和环境变量拷贝到slave1和slave2机器:
- 使用scp命令将ZooKeeper文件夹和.bash_profile文件拷贝到slave1和slave2机器上,示例命令如下:
1
2
3
4scp -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/
- 使用scp命令将ZooKeeper文件夹和.bash_profile文件拷贝到slave1和slave2机器上,示例命令如下:
修改对应机器的myid文件:
- 在slave1机器上:
echo 2 > /usr/local/src/zookeeper/data/myid - 在slave2机器上:
echo 3 > /usr/local/src/zookeeper/data/myid
- 在slave1机器上:
在三台机器上分别启动ZooKeeper服务:
- 分别在三台机器上运行命令
zkServer.sh start。
- 分别在三台机器上运行命令
检查ZooKeeper状态:
- 启动完毕后,分别在每台机器上运行命令
zkServer.sh status,查看状态。 - 应该会显示一个Leader和两个Follower的状态,表示安装的ZooKeeper集群配置正确。
- 启动完毕后,分别在每台机器上运行命令
7.1 安装HBase
解压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
添加系统变量:
- 使用命令
vi /root/.bash_profile打开**.bash_profile**文件。 - 在文件末尾添加以下内容:
1
2
3# HBase
export HBASE_HOME=/usr/local/src/hbase
export PATH=$PATH:$HBASE_HOME/bin
- 使用命令
刷新环境变量:
- 运行以下命令刷新环境变量使其生效:
1
2source /root/.bash_profile
或者. /root/.bash_profile
- 运行以下命令刷新环境变量使其生效:
修改HBase配置文件:
进入HBase的conf目录:
cd /usr/local/src/hbase/conf编辑hbase-env.sh文件:
1
2export 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
2slave1
slave2
将配置好的HBase和环境变量拷贝到slave1和slave2机器:
- 使用scp命令将HBase文件夹和.bash_profile文件拷贝到slave1和slave2机器上,示例命令如下:
1
2
3
4scp -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/
- 使用scp命令将HBase文件夹和.bash_profile文件拷贝到slave1和slave2机器上,示例命令如下:
启动HBase服务:
- 运行命令
start-hbase.sh启动HBase服务。
- 运行命令
检查HBase安装:
- 在每台机器上运行
jps命令,检查是否有HMaster和HRegionServer进程,如果有则表示启动成功。 - 运行
hbase shell命令进入HBase命令行,如果显示hbase(main):001:0,表示成功进入HBase命令行界面。 - 输入
list_namespace命令,如果显示default和hbase两个namespace,则安装成功。
- 在每台机器上运行
8.1 安装Flink
解压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
添加系统变量:
- 使用命令
vi /root/.bash_profile打开**.bash_profile**文件。 - 在文件末尾添加以下内容:
1
2
3# Flink
export FLINK_HOME=/usr/local/src/flink
export PATH=$PATH:$FLINK_HOME/bin
- 使用命令
刷新环境变量:
- 运行以下命令刷新环境变量使其生效:
1
2source /root/.bash_profile
或者. /root/.bash_profile
- 运行以下命令刷新环境变量使其生效:
修改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
修改workers文件:
- 使用命令
vi workers打开文件。 - 在文件中按行添加所有节点的主机名,每行一个。
1
2
3master
slave1
Slave2
- 使用命令
将配置好的Flink和环境变量拷贝到slave1和slave2机器:
- 使用scp命令将Flink文件夹和.bash_profile文件拷贝到slave1和slave2机器上,示例命令如下:
1
2
3
4scp -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/
- 使用scp命令将Flink文件夹和.bash_profile文件拷贝到slave1和slave2机器上,示例命令如下:
启动Flink集群:
- 运行命令
start-cluster.sh启动Flink集群,输出三个机器的starting即可。 - 确保每个节点上都显示
"Starting StandaloneSessionClusterEntrypoint"和"Starting TaskManagerRunner"。
- 运行命令
检查安装:
- 运行
jps命令,检查master节点上是否有StandaloneSessionClusterEntrypoint和TaskManagerRunner进程,确认启动成功。 - 在浏览器中访问master节点的8081端口,检查是否能够看到Flink的Web管理界面。
- 运行
运行任务:
运行以下命令来运行内置的测试案例(请注意截图以供比赛使用):
内置的案例在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的运行结果是输出一堆(单词,数量)就对了
- Flink on YARN模式(无需启动Flink集群,但需要启动Hadoop):
- 跑streaming(流处理)案例的方式:
- 在一个新的SSH会话中运行nc -l -p 18888命令
- 如果nc命令未找到,可以使用
yum install nc安装
- 如果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)
- 在一个新的SSH会话中运行nc -l -p 18888命令
- 跑batch(批处理)案例的方式:
9.1 安装Spark
解压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
添加系统变量:
- 使用命令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
刷新环境变量:
- 运行以下命令刷新环境变量使其生效:
1
2source /root/.bash_profile
或者. /root/.bash_profile
- 运行以下命令刷新环境变量使其生效:
修改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
5export 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/
- 进入Spark的conf目录:
修改workers文件:
- 使用命令
vi workers打开文件。 - 在文件中按行添加所有节点的主机名,每行一个。
1
2
3master
slave1
slave2
- 使用命令
将配置好的Spark和环境变量拷贝到slave1和slave2机器:
使用scp命令将Spark文件夹和.bash_profile文件拷贝到slave1和slave2机器上,示例命令如下:
1
2
3
4scp -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/
启动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
检查安装:
- 运行
jps命令,检查master节点上是否有Master和Worker进程,确认启动成功。 - 在浏览器中访问master节点的8080端口,检查是否能够看到Spark的Web界面。
- 运行
运行任务:
- 接下来需要运行内置的测试案例来验证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的命令行。
- 对于Spark on YARN模式(Spark集群无需启动,但需要启动Hadoop):
- 接下来需要运行内置的测试案例来验证Spark是否正常工作(请注意截图以供比赛使用):
10.1 安装Flume
解压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·
添加系统变量:
- 使用命令·vi /root/.bash_profile·打开**.bash_profile**文件。
- 在文件末尾添加以下内容:
1
2
3# Flume
export FLUME_HOME=/usr/local/src/flume
export PATH=$PATH:$FLUME_HOME/bin
刷新环境变量:
- 运行以下命令刷新环境变量使其生效:
1
2source /root/.bash_profile
或者. /root/.bash_profile
- 运行以下命令刷新环境变量使其生效:
配置采集器:
进入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
启动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采集器:
- 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
解压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
添加系统变量:
- 使用命令
vi /root/.bash_profile打开**.bash_profile**文件。 - 在文件末尾添加以下内容:
1
2
3# Kafka
export KAFKA_HOME=/usr/local/src/kafka
export PATH=$PATH:$KAFKA_HOME/bin
- 使用命令
刷新环境变量:
- 运行以下命令刷新环境变量使其生效:
1
2source /root/.bash_profile
或者. /root/.bash_profile
- 运行以下命令刷新环境变量使其生效:
配置Kafka:
进入Kafka的config目录:
cd /usr/local/src/kafka/config编辑
server.properties文件(master、slave1和slave2都要编辑)。修改以下配置项:
1
2
3
4
5
6broker.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(分别是各个机器的机器名)保存并关闭文件。
将配置好的Kafka和环境变量复制到slave1和slave2:
运行以下命令将Kafka复制到slave1和slave2:
1
2
3
4scp -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文件。
启动Kafka:
- 确保ZooKeeper正常运行(三台机器都要运行)。
- 运行以下命令启动Kafka(分别在master、slave1和slave2上执行):
kafka-server-start.sh -daemon /usr/local/src/kafka/config/server.properties - 启动后,运行
jps命令,查看是否有kafka和QuorumPeerMain进程(QuorumPeerMain是ZooKeeper的进程)。
12.1 安装ClickHouse
解压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
3tar -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
2sh /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/
修改配置文件:
使用命令
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编辑器中查找对应行。
启动ClickHouse:
- 运行以下命令启用ClickHouse服务:
1
2systemctl enable clickhouse-server
systemctl start clickhouse-server
- 运行以下命令启用ClickHouse服务:
检查安装:
- 启动后,使用以下命令连接到ClickHouse数据库:
clickhouse-client -h 172.16.x.x --port 9002 -u default --password youpassword
(请将你设置的密码替换为您在安装过程中设置的密码) - 如果成功连接到数据库,会显示
Connected to ClickHouse server,并出现提示符/出现master:就是成功了。
- 您可以输入
show databases;命令查看数据库列表。
- 启动后,使用以下命令连接到ClickHouse数据库:
特殊情况:如果您忘记了密码:
- 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
环境准备:
- 解压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
- 解压Redis压缩包到/usr/local/src/目录:
安装编译环境:
- 安装必要的编译工具和库:
1
yum install -y gcc automake autoconf libtool make
- 安装必要的编译工具和库:
编译:
- 进入Redis源代码目录:
cd redis/src - 运行以下命令进行编译和安装,指定安装路径为/usr/redis:
make PREFIX=/usr/redis install
- 进入Redis源代码目录:
启动:
- 使用默认配置文件启动Redis服务器:
/usr/redis/bin/redis-server /root/software/redis/redis.conf >> /dev/null &
- 使用默认配置文件启动Redis服务器:
检查:
- 启动后,可以使用以下命令连接到Redis服务器进行测试:
cd /usr/redis/bin/./redis-cli - 如果成功连接到Redis服务器,会显示
127.0.0.1:6379>。
- 启动后,可以使用以下命令连接到Redis服务器进行测试:
添加变量
- 使用命令
vi /root/.bash_profile打开**.bash_profile**文件。 - 在文件末尾添加以下内容:
1
2
3# Redis
export Redis_HOME=/usr/redis/bin
export PATH=$PATH:$Redis_HOME/bin
- 使用命令
至此,结束环境搭建








