【基于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,在网上搜索了很多的教程发现都没有效果,浪费了很多时间,尝试了多次之后发现这种方式是最稳妥的,那么废话不多说,往下看: 目录 第一步&…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
