【基于OpenEuler国产操作系统大数据实验环境搭建】
大数据实验环境搭建
- 一、实验简介
- 1.1 实验内容
- 1.2 环境及其资源规划
- 二、实验目的
- 三、实验过程
- 3.1 安装虚拟机软件及操作系统
- 3.2 创建安装目录(在主节点上操作)
- 3.2 安装JDK及基本设置(所有节点都需要操作)
- 3.3 安装Hadoop
- 3.4 安装Zookeeper
- 3.5 安装HBase
- 3.6 安装Spark
- 3.7 安装Hive
- 3.8 安装Flume
- 3.9 安装Sqoop
- 四、实验小结
一、实验简介
1.1 实验内容
本次实训是基于国产化操作系统openEuler上搭建大数据学习环境,实验主要内容分为两部分:
- 环境搭建,具体包括:
- Hadoop的分布式环境
- Spark分布式环境
- Zookeeper分布式环境
- HBase分布式环境
- Flume单机环境
- Hive单机环境
- Sqoop单机环境
- 大数据组件的基本用法
1.2 环境及其资源规划
-
所需软件
说明 Mware workstation 16+ doop ase ark okeeper ve ume oop K -
拓扑图
三台虚拟机构建一个全分布式的环境,拓扑图如下:

主从节点上各自运行的进程分布规划:
类型 资源规划 主要组件名称 主要进程名称 点 至少4GB内存 2vCPU Hadoop、Spark、HBase、Zookeeper、Flume NameNode、SecondaryNameNode、DataNode、ResourceManager、NodeManager、HMatster、HRegionServer、QuorumPeerMain、Bootstrap、Master、Worker 点 至少2GB内存 1vCPU Hadoop、Spark、HBase、Zookeeper DataNode、NodeManager、HRegionServer、Worker、QuorumPeerMain
二、实验目的
本次实验的目的是希望学生能够从零开始搭建一套用于学习的大数据环境,包括Hadoop、HBase、Spark等分布式环境。
三、实验过程
3.1 安装虚拟机软件及操作系统
请自行参考如下资料进行操作,确保虚拟机及操作系统正常安装
- 安装虚拟机VMware或者VirtualBox
可以参考我另外一篇博客: Linux基础之虚拟机的创建 - 创建虚拟机和安装操作系统openEuler或者CentOS7
可以参考我另外一篇博客:在VMware上虚拟机上安装CentOS-7操作系统
这里选择安装openEuler,具体步骤如下:-
创建虚拟机














-
安装操作系统


然后确定。最后,启动虚拟机,进行操作系统的安装。

启动后,选择如下选项,选择好后,回车:

之后,等待一小会儿,就会出现如下界面,保持默认,点击continue按钮:

然后进入下一个界面,如下图所示,其中红色框框起来的部分是需要进行修配置的:

安装上图顺序,先从序号为1的地方开始,点击Installation Destination,进入配置页面,如下图所示,只需要点击Done按钮即可:

然后点击序号为2的部分,进入配置页面,如下图所示:

然后点击序号为3的部分,进入配置页面,如下图所示:

然后点击序号为4的部分,进入配置页面,如下图所示:

上述4个地方都配置后,就可以点击Begin Installation按钮了,如下图所示:

接下来就是比较漫长的等待过程了,这个过程估计5-15分钟左右不等。

当安装结束后,点击Reboot System按钮重启下系统:

系统如正常启动,就会显示登录的交互式界面,然后你输入root以及对应的密码即可正常进入到系统中了。

到此,openEuler22.03版本的操作系统已经被正常的安装。 -
克隆出另外两台虚拟机
我们需要三台虚拟机,另外两台虚拟机就可以利用VMWare Workstation软件的克隆功能,以之前新建好的虚拟机作为克隆的对象即可。具体操作如下:- 先将新建好的虚拟机关机,然后再进行克隆





- 重复上述操作,然后再次克隆出s3虚拟机出来。
- 修改新克隆出来的虚拟机s2和s3的内存大小和CPU核心数


- 先将新建好的虚拟机关机,然后再进行克隆
-
- 将三台虚拟机按顺序启动,设置静态IP地址
- 登录s1虚拟机中,设置静态IP地址:
进入网卡配置文件所在目录:
编辑网卡配置文件:cd /etc/sysconfig/network-scripts/
按照如下图所示,进行设置:vim ifcfg-ens33

为方便将上图所示内容进行复制后修改,提供如下内容作为参考,大家根据自己虚拟机实际IP地址进行修改即可:
最后,重启网卡:BOOTPROTO=static IPADDR=192.168.85.142 NETMASK=255.255.255.0 GATEWAY=192.168.85.2 DNS1=192.168.85.2 DNS2=114.114.114.114
重启命令为:
效果如下:ifdown ens33 # 停止,ens33是网卡名称 ifup ens33 # 启动
- 登录s2和s3,按照上述相同的操作设置:
- 将s2的IP地址设置成: 192.168.85.143
- 将s3的IP地址设置成: 192.168.85.144
- 登录s1虚拟机中,设置静态IP地址:
3.2 创建安装目录(在主节点上操作)
-
连接虚拟机:使用MobaXterm工具连接到刚刚创建的好的虚拟机


输入密码,当输入密码时界面上没有任何反应上正常的,只要输入正确后,按回车即可正常登录系统中了:

后续实验涉及到利用该工具连接虚拟机,可按照这个方法登录即可。 -
创建必要的目录:在所有主机上的根目录/下创建tools和mysoft两个目录
mkdir /tools mkdir /mysoft执行成功如下:

-
上传安装包:利用MobXtrem工具上传jdk、hadoop等安装包到/tools目录下


上传成功后,会在这里看到:

后续实验涉及到的其他的安装包按照这种方式自行上传即可。
3.2 安装JDK及基本设置(所有节点都需要操作)
-
设置虚拟机主机名
先登录s2虚拟机,然后执行如下命令:# 设置s2的主机名称hostnamectl --static set-hostname s2exit
再登录s3虚拟机,然后执行如下命令:# 设置s3的主机名称hostnamectl --static set-hostname s3exit
-
JDK的安装
- 分别登录s1、s2、s3三台虚拟机,然后在各自的节点上执行如下操作:
这里我以s1节点为例子进行说明,其他两个节点执行相同操作即可。 - 进入tools目录,然后执行下面的命令进行解压安装
cd /toolstar -zvxf jdk-8u171-linux-x64.tar.gz -C /mysoft/ - 配置环境变量,执行:
在.bash_profile文件中添加如下信息:vim ~/.bash_profileexport JAVA_HOME=/mysoft/jdk1.8.0_171 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin; - 让环境变量生效
source ~/.bash_profile - 验证jdk是否安装成功
结果如下:java -version[root@s1 tools]# java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) [root@s1 tools]#其他s2和s3需要执行上述相同的操作。
- 分别登录s1、s2、s3三台虚拟机,然后在各自的节点上执行如下操作:
-
虚拟机中配置主机名与ip地址的映射关系
- 所有主机都需要配置主机名映射关系,编辑hosts文件,执行:
在文件末尾添加如下内容,注意:vim /etc/hostsIP地址改成你自己环境的IP地址:
效果如下:192.168.85.142 s1 192.168.85.143 s2 192.168.85.144 s3

- 所有主机都需要配置主机名映射关系,编辑hosts文件,执行:
-
关闭防火墙
-
所有主机都需要关闭防火墙,每台节点都需要执行命令:
systemctl stop firewalld.service systemctl disable firewalld.service效果如下所示:

-
-
配置免密码登录
-
所有主机都需要生成密钥对并将公钥分发给其他节点,每台节点都需要执行命令:
生成密钥对:cd /root ssh-keygen -t rsa # 执行命令后,只需敲三次回车键效果如下:

三台虚拟机上都需要执行如下命令:在执行命令时需要先输入
yes,然后输入对于节点的密码:ssh-copy-id -i .ssh/id_rsa.pub root@s1 ssh-copy-id -i .ssh/id_rsa.pub root@s2 ssh-copy-id -i .ssh/id_rsa.pub root@s3在
s1虚拟机上执行的效果如下(s2和s3上也需要执行相同的命令):


当三台虚拟机都执行完成后,可以验证一下是否可以从s1通过ssh协议登录到s2,执行如下命令:ssh s2如能正常登录的话,会如下图所示:

-
3.3 安装Hadoop
以下操作只需在主节点s1上执行如下操作,如有特殊说明的请注意按照要求进行执行。
-
上传hadoop-2.7.4.tar.gz到/tools目录下
执行下面的命令进行解压安装tar -zvxf /tools/hadoop-2.7.4.tar.gz -C /mysoft/ mv /mysoft/hadoop-2.7.4 /mysoft/hadoop -
配置环境变量:
vim ~/.bash_profile添加如下信息:
export HADOOP_HOME=/mysoft/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin -
让环境变量生效:
source ~/.bash_profile -
验证是否生效:
执行:hdfs version
效果如下:[root@s1 tools]# hdfs version Hadoop 2.7.4 Subversion https://shv@git-wip-us.apache.org/repos/asf/hadoop.git -r cd915e1e8d9d0131462a0b7301586c175728a282 Compiled by kshvachk on 2017-08-01T00:29Z Compiled with protoc 2.5.0 From source with checksum 50b0468318b4ce9bd24dc467b7ce1148 This command was run using /mysoft/hadoop/share/hadoop/common/hadoop-common-2.7.4.jar [root@s1 tools]# -
新建tmp目录:
进入到hadoop安装目录下,执行:mkdir /mysoft/hadoop/tmp -
配置Hadoop配置文件
只需对五个配置文件进行配置即可:
hadoop-env.shhdfs-site.xmlcore-site.xmlmapred-site.xmlyarn-site.xml配置文件所在目录:
/mysoft/hadoop/etc/hadoop -
配置 hadoop-env.sh文件
编辑该文件,执行:vim /mysoft/hadoop/etc/hadoop/hadoop-env.sh找到JAVA_HOME所在地方,将
${JAVA_HOME}改成/mysoft/jdk1.8.0_171:export JAVA_HOME=/mysoft/jdk1.8.0_171 -
配置 hdfs-site.xml
编辑该文件,执行:vim /mysoft/hadoop/etc/hadoop/hdfs-site.xml在
<configuration></configuration>之间添加<property><name>dfs.replication</name><value>3</value></property><property><name>dfs.permissions</name><value>false</value></property>效果如下:

-
配置 core-site.xml
编辑该文件,执行:vim /mysoft/hadoop/etc/hadoop/hdfs-site.xml在
<configuration></configuration>之间添加<property><name>fs.defaultFS</name><value>hdfs://s1:9000</value></property> <property><name>hadoop.tmp.dir</name><value>/mysoft/hadoop/tmp</value></property>效果如下:

-
配置 mapred-site.xml
编辑该文件,执行:cp /mysoft/hadoop/etc/hadoop/mapred-site.xml.template /mysoft/hadoop/etc/hadoop/mapred-site.xml vim /mysoft/hadoop/etc/hadoop/mapred-site.xml在
<configuration></configuration>之间添加<property><name>mapreduce.framework.name</name><value>yarn</value> </property> <!-- 历史服务器端地址 --> <property><name>mapreduce.jobhistory.address</name><value>s1:10020</value> </property> <!-- 历史服务器 web 端地址 --> <property><name>mapreduce.jobhistory.webapp.address</name><value>s1:19888</value> </property> -
配置 yarn-site.xml
编辑该文件,执行:vim /mysoft/hadoop/etc/hadoop/yarn-site.xml在
<configuration></configuration>之间添加<!-- Site specific YARN configuration properties --> <property><name>yarn.resourcemanager.hostname</name><value>s1</value> </property> <property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value> </property> <!-- 日志聚集功能使能 --> <property><name>yarn.log-aggregation-enable</name><value>true</value> </property> <!-- 日志保留时间设置7天 --> <property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value> </property> <!--配置Log Server --> <property><name>yarn.log.server.url</name><value>http://s1:19888/jobhistory/logs</value> </property> -
修改slaves文件,将原来的内容删除掉,然后添加如下内容:
编辑该文件,执行:vim /mysoft/hadoop/etc/hadoop/slaves添加如下内容:
s1 s2 s3 -
格式化:HDFS
执行命令:hdfs namenode -format如格式化成功,在打印出来的日志可以看到如下信息:
…… Storage directory /mysoft/hadoop/tmp/dfs/name has been successfully formatted. ……
-
分发到从节点
将上述配置好后的环境即hadoop整个目录分别远程复制到其他两台从节点上(s2,s3)上,在s1节点上执行如下命令:scp -r /mysoft/hadoop/ root@s2:/mysoft/scp -r /mysoft/hadoop/ root@s3:/mysoft/ -
分别在s2和s3两个节点上配置hadoop环境变量:
vim ~/.bash_profile添加如下信息:
export HADOOP_HOME=/mysoft/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin让环境变量生效:
source ~/.bash_profile -
在主节点(s1)上启动Hadoop集群
启动hadoop集群服务 :start-all.sh效果如下:

-
验证:
首先在 web界面进行验证,浏览器分别访问如下地址:
访问HDFS:http://IP(s2的IP地址):50070,正常会看到如下界面

访问Yarn:
http://IP(s2的IP地址):8088,正常会看到如下界面

然后,在主机点
s1上执行jps命令,正常情况下会有如下进程:NameNode DataNode SecondaryNameNode ReourceManager NodeManager最后,在两台从节点(s2和s3)上执行jps命令,正常情况下会有如下进程:
DataNode NodeManager如需要关闭hadoop集群,在s1主节点上执行:
stop-all.sh至此,Hadoop全分布式环境已经全部搭建完成,大家试试看吧!
3.4 安装Zookeeper
以下操作只需要在s1主节点上进行操作,有特别说明的除外:
-
上传zookeeper-3.4.5.tar.gz到/tools目录下
-
解压安装
cd /tools tar -zvxf zookeeper-3.4.5.tar.gz -C /mysoft/ mv /mysoft/zookeeper-3.4.5 /mysoft/zookeeper -
配置环境变量(
所有节点都需要配置)
编辑~/.bash_profile文件:vim ~/.bash_profile在文件尾部添加如下内容:
export ZK_HOME=/mysoft/zookeeper export PATH=$PATH:$ZK_HOME/bin -
创建临时目录tmp和myid文件
在zookeeper安装路径下创建tmp目录,用于存储临时文件:mkdir /mysoft/zookeeper/tmp在/mysoft/zookeeper/tmp目录下创建一个myid的空文件:
echo 1 > /mysoft/zookeeper/tmp/myid -
配置zoo.cfg文件
该文件并不存在,需要从模板文件复制:cp /mysoft/zookeeper/conf/zoo_sample.cfg /mysoft/zookeeper/conf/zoo.cfg编辑zoo.cfg:
vim /mysoft/zookeeper/conf/zoo.cfg然后将zoo.cfg内容中的
dataDir的值改成/mysoft/zookeeper/tmpdataDir=/mysoft/zookeeper/tmp在zoo.cfg的末尾,再添加如下内容:
server.1=s1:2888:3888 server.2=s2:2888:3888 server.3=s3:2888:3888效果如下:

-
分发安装包
将配置好的zookeeper拷贝到s2和s3两个节点上:scp -r /mysoft/zookeeper/ s2:/mysoft/ scp -r /mysoft/zookeeper/ s3:/mysoft/ -
修改s2节点上的myid
登录s2节点上,修改myid内容为2:echo 2 > /mysoft/zookeeper/tmp/myid -
修改s3节点上的myid
登录s3节点上,修改myid内容为3:echo 3 > /mysoft/zookeeper/tmp/myid -
让所有节点环境变量生效
在所有节点上都需要执行让环境变量生效的命令:source ~/.bash_profile -
在所有节点上启动zookeeper
在所有节点上都需要执行启动命令,执行:zkServer.sh start效果如下图所示:

-
在所有节点上检查zookeeper启动状态
在所有节点上都需要执行启动命令,执行:zkServer.sh status效果如下:

-
如果需要停止zookeeper集群,则需在
所有节点上执行:zkServer.sh stop
3.5 安装HBase
以下没有特殊说明的情况下,在s1主节点上进行配置,有特殊说明按照说明进行:
-
上传hbase-1.4.8-bin.tar.gz到/tools目录下
-
解压安装
cd /tools tar -zvxf hbase-1.4.8-bin.tar.gz -C /mysoft/ mv /mysoft/hbase-1.4.8 /mysoft/hbase -
配置环境变量(
三台节点都需要配置)
编辑:vim ~/.bash_profile添加如下内容:
export HBASE_HOME=/mysoft/hbase export PATH=$HBASE_HOME/bin:$PATH -
修改配置文件
-
修改
hbase-env.sh配置文件:vim /mysoft/hbase/conf/hbase-env.sh找到
# export JAVA_HOME=/usr/java/jdk1.6.0/这句代码,将#号去掉,将/usr/java/jdk1.6.0改成你自己的JAVA_HOME路径。修改好之后的样子为:export JAVA_HOME=/mysoft/jdk1.8.0_171
找到# export HBASE_MANAGES_ZK=true, 将#号去掉,然后将true改成false。
按照下图所示,用#号注释掉如下两行代码即可:

-
修改
hbase-site.xml配置文件:
编辑:vim /mysoft/hbase/conf/hbase-site.xml在
<configuration></configuration>之间添加配置内容:<!--HBase的数据保存在HDFS对应目录,hadoop是全分布式--><property><name>hbase.rootdir</name><value>hdfs://s1:9000/hbase</value></property> <!--是否是分布式环境--><property><name>hbase.cluster.distributed</name><value>true</value></property> <!--配置ZK的地址--><property><name>hbase.zookeeper.quorum</name><value>s1,s2,s3</value></property> <!--冗余度--><property><name>dfs.replication</name><value>3</value></property> <!--主节点和从节点允许的最大时间误差--><property><name>hbase.master.maxclockskew</name><value>180000</value></property> -
修改
regionservers配置文件:
编辑:vim /mysoft/hbase/conf/regionservers将localhost删除掉,再添加如下内容:
s1 s2 s3
-
-
分发HBase安装目录
将/mysoft/hbase整个目录复制到其他两个从节点上:scp -r /mysoft/hbase/ root@s2:/mysoft/ scp -r /mysoft/hbase/ root@s3:/mysoft/ -
让所有节点环境变量生效
在所有节点上都需要执行让环境变量生效的命令:source ~/.bash_profile -
启动HBase
特别注意:
启动HBase之前,必须确保hadoop集群、zookeeper集群已经事先启动了。如没有启动hadoop和zookeeper,需要先启动这两个组件。否则,HBase将启动失败。在
s1主节点上启动HBase:start-hbase.sh -
检查HBase的启动状态
- 使用jps命令查看,是否已经启动了如下进程,如果进程存在,则说明安装配置hbase成功了:
从节点:HRegionServer
主节点:HMaster - 登录http://IP(s1的IP):16010地址查看HBase的Web页面是否正常打开:

- 使用jps命令查看,是否已经启动了如下进程,如果进程存在,则说明安装配置hbase成功了:
3.6 安装Spark
以下没有特殊说明的情况下,在s1主节点上进行配置,有特殊说明按照说明进行:
-
上传spark-2.3.2-bin-hadoop2.7.tgz到/tools目录下
-
解压安装
cd /tools tar -zvxf spark-2.3.2-bin-hadoop2.7.tgz -C /mysoft/ mv /mysoft/spark-2.3.2-bin-hadoop2.7 /mysoft/spark -
修改配置文件
- 修改spark-env.sh
编辑:
修改如下内容:mkdir /mysoft/spark/history cp /mysoft/spark/conf/spark-env.sh.template /mysoft/spark/conf/spark-env.sh vim /mysoft/spark/conf/spark-env.shexport JAVA_HOME=/mysoft/jdk1.8.0_171 export SPARK_MASTER_HOST=s1 export SPARK_MASTER_PORT=7077 #history 配置历史服务 export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=30 -Dspark.history.fs.logDirectory=file:///mysoft/spark/history" - 修改slaves
编辑:
将localhost先删除,然后添加如下内容:cp /mysoft/spark/conf/slaves.template /mysoft/spark/conf/slaves vim /mysoft/spark/conf/slavess1 s2 s3 - 修改spark-defaults.conf
编辑:
在末尾添加如下内容:mkdir /mysoft/spark/logs cp /mysoft/spark/conf/spark-defaults.conf.template /mysoft/spark/conf/spark-defaults.conf vim /mysoft/spark/conf/spark-defaults.confspark.eventLog.enabled true spark.eventLog.dir /mysoft/spark/logs
- 修改spark-env.sh
-
分发spark目录
将/mysoft/spark整个目录复制到其他两个从节点上:scp -r /mysoft/spark/ root@s2:/mysoft/ scp -r /mysoft/spark/ root@s3:/mysoft/ -
启动Spark集群
在s1主节点,执行启动命令:/mysoft/spark/sbin/start-all.sh效果如下:

-
检查Spark集群状态
-
执行jps命令,验证进程:

-
访问SparkUI界面:http://IP(s1的IP):8080

-
3.7 安装Hive
Hive默认的元数据存储是Derby,在测试时使用。由于生成环境中需要使用其他的存储系统替换Derby数据库,以支持高并发场景。故,这里我们需要安装MySQL来作为Hive元数据存储系统。接下来,需先安装MySQL,然后再安装hive。以下操作是在s1主节点上操作:
-
安装MySQL(这里安装MySQL5.7)
- 以root用户执行如下命令,使用yum来简单安装MySQL5.7+:
注意:安装成功后,root用户密码默认为空# 用yum查询目前操作系统下yum仓库中支持的MySQL版本,目前该仓库只支持MySQL5 yum search mysql # 利用yum来安装MySQL5 yum install mysql5-server.x86_64 -y
启动MySQL服务:
启动成功后,查看下MySQL的运行状态,如下图所示:systemctl start mysqld

- 修改root默认密码为123456,并授权允许root用户远程访问,执行如下命令:
效果如下图所示:[root@s1 ~]# mysql -uroot -p Enter password: # 这里执行回车即可 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.21 MySQL Community Server (GPL)Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> alter user 'root'@'localhost' identified by '123456'; # 修改MySQL密码为123456 Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; # 修改允许root用户远程登录MySQL Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> exit; Bye

- 创建用于存储hive元数据的数据库
重新登录MySQL:
创建名为hive的database:mysql -uroot -p123456
效果如下:CREATE DATABASE hive CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

- 以root用户执行如下命令,使用yum来简单安装MySQL5.7+:
-
安装Hive
-
上传apache-hive-2.3.3-bin.tar.gz到/tools目录下
-
解压安装
cd /tools tar -zvxf apache-hive-2.3.3-bin.tar.gz -C /mysoft/ mv /mysoft/apache-hive-2.3.3-bin /mysoft/hive -
配置环境变量
编辑:vim ~/.bash_profile添加如下内容:
export HIVE_HOME=/mysoft/hive export PATH=$HIVE_HOME/bin:$PATH让环境变量生效:
source ~/.bash_profile -
新增hive-site.xml配置文件
编辑:vim /mysoft/hive/conf/hive-site.xml添加如下内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://s1:3306/hive?useSSL=false</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value></property></configuration> -
上传MySQL驱动到hive安装路径下的/lib目录下
注意一定要使用高版本的MySQL驱动(5.1.43以上的版本)

-
初始化MySQL
以root用户执行如下命令:schematool -dbType mysql -initSchema效果如下:

-
验证Hive是否可用
需保证hadoop集群处于正常运行状态,可参考hadoop实验需保证MySQL是处于正常运行状态hadoop正常和MySQL正常运行状态下,进行如下测试:
在s1主节点上,执行如下命令:
正常情况下,如下图所示:hive # 回车即可

-
启动hiveserver2服务(
可选做)
该服务用于支持其他程序连接到Hive中,且可以使用beeline进行操作,便于写SQL。
以后台方式启动,执行:hive --service hiveserver2 &效果如下:

使用beeline命令登录hive的验证:beeline -u jdbc:hive2://s1:10000 -n root如果报错:
beeline> !connect jdbc:hive2://s1:10000Connecting to jdbc:hive2://s1:10000Enter username for jdbc:hive2://s1:10000: rootEnter password for jdbc:hive2://s1:10000: ******24/12/10 16:48:56 [main]: WARN jdbc.HiveConnection: Failed to connect to s1:10000Error: Could not open client transport with JDBC Uri: jdbc:hive2://s1:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate root (state=08S01,code=0)beeline>则需要配置hadoop安装目录下/mysoft/hadoop/etc/hadoop/core-site.xml,加入如下配置:
<property><name>hadoop.proxyuser.root.hosts</name><value>*</value> </property> <property><name>hadoop.proxyuser.root.groups</name><value>*</value> </property>还需要修改/mysoft/hadoop/etc/hadoop/hdfs-site.xml,添加如下:
<property><name>dfs.webhdfs.enabled</name><value>true</value> </property>重启hadoop集群与hive的hiveserver2服务,再重新使用beeline连接:
先停止:

再次启动hadoop和hiveserver2:start-all.sh hive --service hiveserver2 &效果如下:

此时,再次使用beeline重新登录,正常登录的效果如下:


-
3.8 安装Flume
以下操作均在s1主节点上进行操作:
- 上传apache-flume-1.9.0-bin.tar.gz到/tools目录下
- 解压安装
cd /tools tar -zvxf apache-flume-1.9.0-bin.tar.gz -C /mysoft/ mv /mysoft/apache-flume-1.9.0-bin /mysoft/flume - 配置环境变量
编辑:
添加如下内容:vim ~/.bash_profile
让环境变量生效:export FLUME_HOME=/mysoft/flume export PATH=$PATH:$FLUME_HOME/binsource ~/.bash_profile - 验证Flume环境是否正常
正常情况下,会打印如下内容:flume-ng version[root@s1 mysoft]# flume-ng version Flume 1.9.0 Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git Revision: d4fcab4f501d41597bc616921329a4339f73585e Compiled by fszabo on Mon Dec 17 20:45:25 CET 2018 From source with checksum 35db629a3bda49d23e9b3690c80737f9 [root@s1 mysoft]# - 入门小案例测试Flume功能正常与否
本案例是通过在s1节点上安装NetCat工具(简称nc),然后由nc发送数据,最后由部署在s1节点中的flume接收数据。具体步骤如下:-
在
s1节点上安装ncyum install nc -y -
在
s1节点上创建flume配置文件
新建配置文件:nc-to-flume.confvim /mysoft/flume/conf/nc-to-flume.conf添加如下内容:
#声明Agent三种组件 a1.sources = r1 a1.channels = c1 a1.sinks = k1#定义source信息 a1.sources.r1.type=netcat a1.sources.r1.bind=s1 a1.sources.r1.port=8888#定义sink信息 a1.sinks.k1.type=logger#定义channel信息 a1.channels.c1.type=memory#绑定在一起 a1.sources.r1.channels=c1 a1.sinks.k1.channel=c1 -
在
s1节点上启动flumeflume-ng agent -f /mysoft/flume/conf/nc-to-flume.conf -n a1 -Dflume.root.logger=INFO,console启动成功后,当前会话会处于类似卡死的状态,这是因为当前flume是以前台方式启动,属于正常现象,启动效果如下图所示:

-
重新打开一个SSH会话连接到
s1节点,然后在s1节点上启动nc客户端,发送数据:nc s1 8888并输入数据,如hello world
此时观察另外flume启动的窗口是否能接收到数据,正常如下图所示:

到此,flume采集nc的数据实验到此结束,大家可以自行测试。
-
3.9 安装Sqoop
以下操作在s1节点上进行:
-
上传sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz到/tools目录下
-
解压安装
cd /tools tar -zvxf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /mysoft/ mv /mysoft/sqoop-1.4.7.bin__hadoop-2.6.0 /mysoft/sqoop -
配置环境变量
编辑:vim ~/.bash_profile添加如下内容:
# sqoop export SQOOP_HOME=/mysoft/sqoop export PATH=$PATH:$SQOOP_HOME/bin让环境变量生效:
source ~/.bash_profile -
修改配置文件
- 配置【sqoop-site.xml】
添加如下内容:echo "" > /mysoft/sqoop/conf/sqoop-site.xml vim /mysoft/sqoop/conf/sqoop-site.xml<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>sqoop.metastore.client.enable.autoconnect</name><value>true</value><description>If true, Sqoop will connect to a local metastorefor job management when no other metastore arguments areprovided.</description></property><property><name>sqoop.metastore.client.autoconnect.url</name><value>jdbc:hsqldb:file:/tmp/sqoop-meta/meta.db;shutdown=true</value><description>The connect string to use when connecting to ajob-management metastore. If unspecified, uses ~/.sqoop/.You can specify a different path here.</description></property><property><name>sqoop.metastore.client.autoconnect.username</name><value>SA</value><description>The username to bind to the metastore.</description></property><property><name>sqoop.metastore.client.autoconnect.password</name><value></value><description>The password to bind to the metastore.</description></property><property><name>sqoop.metastore.client.record.password</name><value>true</value><description>If true, allow saved passwords in the metastore.</description></property><property><name>sqoop.metastore.server.location</name><value>/tmp/sqoop-metastore/shared.db</value><description>Path to the shared metastore database files.If this is not set, it will be placed in ~/.sqoop/.</description></property><property><name>sqoop.metastore.server.port</name><value>16000</value><description>Port that this metastore should listen on.</description></property></configuration> - 配置【sqoop-env.sh】
添加如下内容:cp /mysoft/sqoop/conf/sqoop-env-template.sh /mysoft/sqoop/conf/sqoop-env.sh vim /mysoft/sqoop/conf/sqoop-env.sh#Set path to where bin/hadoop is available export HADOOP_COMMON_HOME=/mysoft/hadoop#Set path to where hadoop-*-core.jar is available export HADOOP_MAPRED_HOME=/mysoft/hadoop#set the path to where bin/hbase is available export HBASE_HOME=/mysoft/hbase#Set the path to where bin/hive is available export HIVE_HOME=/mysoft/hive#Set the path for where zookeper config dir is export ZOOCFGDIR=/mysoft/zookeeper
- 配置【sqoop-site.xml】
-
将MySQL数据库的驱动
mysql-connector-java-5.1.44-bin.jar上传到sqoop安装目录下的lib目录下

-
由于sqoop缺少
java-json.jar包进行解析json,需上传到sqoop安装目录下的lib目录下

-
验证,命令行中输入:
sqoop version,看到如下即为安装成功:

关于sqoop的测试案例,可以参考我的一篇博客:Sqoop-1.4.7基本命令使用案例说明
四、实验小结
本次实训我们已经完成了hadoop集群、zookeeper集群、hbase集群、spark集群的安装配置以及hive、flume、sqoop单机安装部署。希望大家能够对大数据环境搭建的过程有所了解和掌握安装的过程。
相关文章:
【基于OpenEuler国产操作系统大数据实验环境搭建】
大数据实验环境搭建 一、实验简介1.1 实验内容1.2 环境及其资源规划 二、实验目的三、实验过程3.1 安装虚拟机软件及操作系统3.2 创建安装目录(在主节点上操作)3.2 安装JDK及基本设置(所有节点都需要操作)3.3 安装Hadoop3.4 安装Z…...
期末软件经济学
文章目录 前言复习策略复习名词解释简答题第一章 ppt后记 前言 最近白天都在忙正事,晚上锻炼一下,然后处理一些杂事,现在是晚上十点多,还有一些时间复习一下期末考试。复习到十一点。 复习策略 感觉比较简单,直接刷…...
滑动窗口算法专题
滑动窗口简介 滑动窗口就是利用单调性,配合同向双指针来优化暴力枚举的一种算法。 该算法主要有四个步骤 1. 先进进窗口 2. 判断条件,后续根据条件来判断是出窗口还是进窗口 3. 出窗口 4.更新结果,更新结果这个步骤是不确定的,…...
基于Java的世界时区自动计算及时间生成方法
目录 前言 一、zoneinfo简介 1、zoneinfo是什么 2、zoneinfo有什么 二、在Java中进行时区转换 1、Java与zoneInfo 2、Java展示zoneInfo实例 3、Java获取时区ID 三、Java通过经纬度获取时区 1、通过经度求解偏移 2、通过偏移量计算时间 3、统一的处理算法 四、总结 …...
Excel + Notepad + CMD 命令行批量修改文件名
注意:该方式为直接修改原文件的文件名,不会生成新文件 新建Excel文件 A列:固定为 renB列:原文件名称C列:修改后保存的名称B列、C列,需要带文件后缀,为txt文件就是.txt结尾,为png图片…...
OpenGL 几何着色器高级应用
几何着色器高级应用 概念回顾 几何着色器(Geometry Shader)是 OpenGL 管线中的可选着色器阶段,位于顶点着色器(Vertex Shader) 和光栅化阶段 之间。 其核心功能是基于输入的图元(如点、线或三角形),生成新的图元,或对输入的图元进行修改。 几何着色器的执行是以图元…...
【Unity基础】Unity 2D实现拖拽功能的10种方法
方法1. 基于 Update 循环的拖拽方法 (DragDrop2D) 代码概述 using System.Collections; using System.Collections.Generic; using UnityEngine;public class DragDrop2D : MonoBehaviour {bool isDraggable;bool isDragging;Collider2D objectCollider;void Start(){objectC…...
duxapp中兼容多端的 BoxShadow 阴影组件
由于RN 安卓端对阴影的支持不太完善,使用这个组件可以实现阴影效果 在RN端是使用 react-native-fast-shadow 实现的 示例 import { BoxShadow, Text } from /duxui<BoxShadow><Text>这是内容</Text> </BoxShadow>Props 继承自Taro的View…...
服务器---centos上安装docker并使用docker配置jenkins
要在 Docker 中安装 Jenkins 并进行管理,可以按照以下步骤操作: 1. 安装 Docker 首先,确保你的系统已经安装了 Docker。如果尚未安装,可以使用以下命令进行安装: 在 CentOS 上安装 Docker sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://…...
Linux系统操作03|chmod、vim
上文: Linux系统操作02|基本命令-CSDN博客 目录 六、chmod:给文件设置权限 1、字母法 2、数字法(用的最多) 七、vim:代码编写和文本编辑 1、启动和退出 1️⃣启动 2️⃣退出 2、vim基本操作 六、chmod&#x…...
数据库同步中间件DBSyncer安装配置及使用
1、介绍 DBSyncer(英[dbsɪŋkɜː],美[dbsɪŋkɜː 简称dbs)是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务…...
虚幻5描边轮廓材质
很多游戏内都有这种描边效果,挺实用也挺好看的,简单复刻一下 效果演示: Linethickness可以控制轮廓线条的粗细 这样连完,然后放到网格体细节的覆层材质上即可 可以自己更改粗细大小和颜色...
ISP帳戶會記錄什麼資訊?
許多用戶並不知道ISP會記錄有關線上活動的大量資訊。從流覽歷史記錄到數據使用情況,ISP經常收集和保留用戶數據,引發一系列隱私問題。 ISP 記錄哪些數據? ISP可以根據其隱私政策記錄各種類型的資訊。常見的記錄數據包括: 1.流覽…...
Facebook如何避免因IP变动而封号?实用指南
随着Facebook在个人社交与商业推广中的广泛应用,越来越多的用户面临因“IP变动”而被封号的问题。尤其是跨境电商、广告运营者和多账号管理用户,这种情况可能严重影响正常使用和业务发展。那么,如何避免因IP变动导致的封号问题?本…...
EXCEL数据清洗的几个功能总结备忘
目录 0 参考教材 1 用EXCEL进行数据清洗的几个功能 2 删除重复值: 3 找到缺失值等 4 大小写转换 5 类型转化 6 识别空格 0 参考教材 精通EXCEL数据统计与分析,中国,李宗璋用EXCEL学统计学,日EXCEL统计分析与决策&#x…...
web网页连接MQTT,显示数据与下发控制命令
web网页连接MQTT,显示数据与下发控制命令 零、前言 在完成一些设备作品后,常常会因为没有一个上位机用来实时检测数据和下发命令而苦恼,在上一篇文章中提到了怎么白嫖阿里云服务器,并且在上面搭建了属于自己的web网站。那么现在…...
数据结构day3作业
一、完整功能【顺序表】的创建 【seqList.h】 #ifndef __SEQLIST_H__ #define __SEQLIST_H__#include <stdio.h> #include <string.h> #include <stdlib.h>//宏定义,线性表的最大容量 #define MAX 30//类型重定义,表示要存放数据的类…...
Android SDK 平台工具版本说明
Android SDK Platform-Tools 是 Android SDK 的一个组件。它包含与 Android 平台进行交互的工具,主要是 adb 和 fastboot。虽然 adb 是 Android 应用开发所必需的,但应用开发者通常仅使用 Studio 安装的副本。如果您想直接从命令行使用 adb 并且未安装 S…...
Sharding-jdbc基本使用步骤以及执行原理剖析
一、基本使用步骤 1、需求说明 使用sharding-jdbc完成对订单表的水平分表,通过快速入门的开发,了解sharding-jdbc使用方法 人工创建两张表,t_order_1和t_order_2,这两张表是订单表拆分后的表,通过sharding-jdbc向订…...
mysql重置root密码(适用于5.7和8.0)
今天出一期重置mysql root密码的教程,适用于5.7和8.0,在网上搜索了很多的教程发现都没有效果,浪费了很多时间,尝试了多次之后发现这种方式是最稳妥的,那么废话不多说,往下看: 目录 第一步&…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
