Hive数据仓库工具课程教案 课程名称: Hive数据仓库工具 主讲教师: 何永亚 所属院部: 人工智能学院 授课班级: 大数据工程2101-02班 2024 -2025学年第二学期 湖南软件职业技术大学课程教案 课程名称 Hive数据仓库工具 教学目标 及基本要求 1.掌握hadoop环境的搭建与配置; 2.掌握hive环境的安装与配置以及开发工具的安装; 3.掌握hive sql的定义操作; 4.掌握hive sql的数据操作; 5.掌握hive sql的查询操作; 6.掌握hive分区表、分桶表的基本操作 7.掌握hive函数的使用 8.自主、开放的学习能力,良好的团队合作精神 教 学 重 点 熟悉掌握Hive 环境的搭建以及hive sql的使用方法。 教 学 难 点 Hive sql的使用 教学内容 与时间分配 第1周 项目一 linux环境搭建与准备 第2周 项目二 hadoop安装与配置 第3周 项目二 hadoop安装与配置 第4周 项目三 Hive的安装部署 第5周 项目三 Hive的安装部署 第6周 项目五 DDL数据定义 第7周 项目五 DML数据操作 第8周 项目六 查询操作 第9周 项目七 分区表和分桶表 第10周 项目八 函数的使用 第11周 项目九 hive sql综合训练 第12周 项目九 hive sql综合训练 第13周 项目十 教育大数据分析平台 第14周 项目十 教育大数据分析平台 第15周 项目十 教育大数据分析平台 第16周 考试 湖南软件职业技术大学课程教案 章节、专题 在虚拟机中安装rocky linux 8 教学目标 及基本要求 掌握rocky linux 8的安装;掌握rocky linux 8中常用的Linux命令,掌握linux常用设置 教 学 重 点 rocky linux8的安装步骤 教 学 难 点 虚拟机的安装与rocky linux8的安装 教学内容 与时间分配 任务项目(5分钟)、 二、课堂引入(5分钟) 三、讲授内容(65分钟) 四、学生答疑(5分钟) 五、课堂小结(5分钟) 六、实训任务布置(5分钟) 习题 实训:Linux环境搭建与准备 湖南软件职业技术大学课程教案 教学内容 1.1 VMware Workstation 安装部署 VMware Workstation 安装步骤: (1)双击运行安装包程序双击运行安装包,弹出图1-1的安装界面,点击下一步。 图1-1 双击运行安装包程序 (2)弹出图1-2所示界面勾选“我接受许可协议中的条款”,点击下一步按钮。 图1-2 接受许可证协议 (3)弹出图1-3界面,选择一个具体的安装位置(建议非中文无空格),选择增强型键盘驱动程序(可不选),点击下一步按钮。 图1-3 选择安装位置 (4)弹出图1-4所示界面,用户可以按照自身使用习惯勾选产品更新和客户体验提升计划,需要可以勾选相应选项,这里我们不勾选,点击下一步按钮。 图1-4 用户体验设置 (5)弹出图1-5界面,勾选“桌面”、“开始菜单程序文件夹” 可以创建相应的快捷方式,然后点击下一步按钮。 图1-5 创建快捷方式 (6)弹出图1-6所示界面,点击安装按钮,程序将开始安装。 图1-6 开始安装 (7)弹出如图1-7所示界面,耐心等待进度条完成,然后点击下一步按钮。 图1-7 等待安装 (8)弹出图1-8所示界面, 输入有效的秘钥,然后点击输入按钮。 图1-8 输入秘钥 (9)弹出图1-9所示界面,点击完成按钮,完成程序的安装。 图1-9 完成安装 1.2创建虚拟机 创建虚拟机步骤: (1)如图1-10所示,打开VMware工作界面,点击创建新的虚拟机按钮创建新的虚拟机。 图1-10 创建新的虚拟机 (2)弹出图1-11所示界面,选择自定义的类型进行安装,然后点击下一步按钮。 图1-11 选择安装方式 (3)弹出图1-12所示界面,选择虚拟机硬件兼容性,这里我们选择默认即可,不需要做任何修改,直接下一步按钮。 图1-12 选择虚拟机硬件兼容性 (4)弹出如图1-13所示界面,我们选择稍后安装操作系统,点击下一步按钮。 图1-13 选择客户端操作系统安装 (5)弹出图1-14所示界面,我们选择Linux操作系统,版本为Red Hat Enterprise linux8 64位,然后点击下一步按钮。 图1-14 选择客户端操作系统类型 (6)弹出如图1-15所示界面,我们命名虚拟机名称,选择虚拟机文件的存储文字,然后点击下一步按钮。 图1-15 修改虚拟机名称 (7)弹出图1-16所示界面,输入处理器的数量,以及每个处理器的内核数量,我们可以根据实际情况填写,这里我们将处理器数量,以及每个处理器内核数量配置为1,然后点击下一步按钮。 图1-16 处理器配置 (8)弹出图1-17所示界面,进行虚拟机内存分配,我们可以根据机器自身情况分配,这里我们分配4096mb,然后点击下一步按钮。 图1-17 虚拟机内存配置 (9)弹出图1-18网络类型选择,我们选择使用网络地址转换(NAT),然后点击下一步按钮。 图1-18 网络类型选择 (10)弹出图1-19所示界面,进行I/O控制器类型选择,选择推荐即可,点击下一步按钮。 图1-19 10选择I/O控制器类型 (11)弹出图1-20所示界面,选择磁盘类型,选择推荐的即可,然后点击下一步按钮。 图1-20 选择磁盘类型 (12)弹出如图1-21所示界面,我们选择创建新虚拟机磁盘,点击下一步按钮。 图1-21 选择创建新的虚拟磁盘 (13)弹出如图1-22所示界面,指定磁盘容量为40GB,空间分配方式为“将虚拟磁盘拆分为多个文件”,点击下一步。 图1-22 指定磁盘容量 (14)弹出如图1-23所示界面,我们可以指定虚拟机的磁盘文件,这里我们设定文件名为hadoop1.vmdk,点击下一步按钮。 图1-23 指定磁盘文件 (15)弹出如图1-24所示界面,点击完成按钮完成虚拟机的创建。 图1-24 完成创建虚拟机 1.3安装rochy linux8系统 安装rochy linux8系统步骤: (1)如图1-25所示,打开VMware软件,双击光驱图标,加载rochy linux8的镜像文件。 图1-25 添加Rochy linux8镜像文件 (2)如图1-26所示,点击开启虚拟机按钮启动虚拟机。 图1-26 启动虚拟机 (3)进入如图1-27所示界面,系统进入倒计时,鼠标点进去,键盘上下键可以选择,选择Install Rochy Linux 8.10 ,然后回车即可。 备注:Ctrl+Alt可以实现Windows主机和VM之间窗口的切换。 图1-27 回车安装Rochy linux8 (4)进入如图1-28所示界面进行语言选择,强烈要求选择English。 图1-28 语言选择 (5)完成语言选择后进入如图1-29所示界面,选择系统键盘,这里选择English,然后点击“done”按钮。 图1-29 选择系统键盘 (6)点击时钟按钮进入选择日期和时间选择界面,选择好相应的日期和时间,点击“done”按钮具体操作如图1-30所示。 图1-30 设置日期与时间 (7)点击“software selection”按钮弹出软件选择界面,选择基础环境安装类型,我们选择最小化安装,然后点击“done”按钮,具体操作如图1-31所示。 图1-31 软件安装 (8)点击“installation destination”按钮,进入安装位置选择界面,选择默认磁盘,点击“done”按钮,具体操作如图1-32所示。 图1-32 选择安装位置 (9)点击Kdump按钮,进入Kdump界面取消相应选择,然后点击“done”按钮,这样可以提高内存的使用率,具体操作如图1-33所示。 图1-33 关闭 KDUMP (10)点击“network&host name”按钮可以配置网络和主机名配置完成后,点击“done”按钮,具体操作如图1-34所示。 图1-34 配置网络与主机名 (12)点击“root password”按钮,配置root账号密码,这里我们配置为123456,最后点击“done”按钮,。具体操作如图1-35所示。 图1-35 配置root账号密码 (11)仔细检查所有配置确定无误后,点击开始安装按钮,具体操作如图1-36所示。 图1-36 检查所有配置开始安装 (13)如图1-37所示,Rochy linux8开始安装,我们耐心等待进度条完成。 图1-37 等待系统安装 (14)如图1-38所示,安装完成后,点击Reboot System按钮重启虚拟机。 图1-38 安装完成,重启虚拟机 (15)如图1-39所示,系统进入到登录界面,输入密码完成登录。 图1-39 登录Rochy linux8系统 至此,Rochy linux8系统已经完整完毕,可以开始使用了。 1.4 linux统一设置 1.4.1配置静态IP 在实际应用中,由于我们使用的是DHCP(Dynamic Host Configuration Protocol:动态主机配置协议)服务器来分配的地址,那么每次重启DHCP服务器ip地址有可能是会变动的。 而我们用Linux来搭建集群学习Hadoop的话,是希望IP固定不变的,因为有很多地方会涉及到IP地址的配置,如果IP地址变化就会涉及到很多相关地方的修改,所以我们需要配置静态IP,那么具体如何进行配置呢? (1)如图1-40所示,在vmware中软件点击编辑-虚拟网络编辑器可以查看当前虚拟的网络信息。 1-40查看网络信息 (2)在命令行输入vi /etc/sysconfig/network-scripts/ifcfg-ens160 命令可以配置网卡信息,具体操作与配置如图1-41所示。 1-41 配置静态ip (3)网络信息配置后,需要重启网络服务,如图1-42所示使用命令systemctl restart NetworkManager。 图1-42 重启网络服务 网络服务重启后,我们需要重启虚拟机,如图1-43所示,输入reboot命令进行重启。 1-43 重启虚拟机 (5)重启后,我要检查一下虚拟机是否能够联网,如图1-44所示Ping www.baidu.com,ping一下百度的网址,如果收到回复表示网络联通。 1-44检查网络 1.4.2 x-shell连接工具 由于直接在Linux虚拟机上操作比较不方便,所以我们选择使用第三方远程连接工具X-shell远程连接到Linux虚拟机,然后通过X-shell对Linux虚拟机进行相关操作。 (1)如图1-45所示,通过360应用商店中进行x-shell工具的安装。 1-45 下载安装X-Shell远程连接工具 (2)如图1-46 所示,打开X-Shell工具,点击file——>new——>connection,配置连接。 1-46 设置连接 (3)选择Authentication,配置用户名和密码,具体操作如图1-47所示。 1-47 设置账号密码 (4)在Sessions对话框选中刚刚创建的会话名称(hadoop1),弹出对话框时我们选择接受并保存,具体操作如图1-48所示。 1-48启动会话 1.4.3 FileZilla传输工具 FileZilla是一个免费开源的FTP软件,可以轻松实现文件上传与下载。 (1)如图1-49所示,在360应用商店,搜索FileZilla,我们可以下载安装FileZilla。 图1-49 安装filezilla (2)如图1-50所示,在FileZilla中点击文件-站点管理,然后新建站点,进行配置后,点击连接,在弹出的对话框选择“accept and save”按钮。 图1-50 filezilla连接虚拟机 1.4.4 配置主机名和IP映射 实际上无论是 IP 地址还是主机名都是为了标识一台主机或者服务器。IP地址就是一台主机上网时IP协议分配给它的一个逻辑地址,主机名(hostname)就相当于又给这台机器取了一个名字,可以为主机取各种各样的名字。如果要用这个名字去访问这台主机,那么就需要配置hostname与IP地址之间的对应关系。具体操作如图1-51所示。 图1-51 配置主机名和ip映射 1.4.5关闭Linux防火墙 防火墙是对服务器进行保护的一种服务,但是有时候这种服务会带来很大的麻烦。比如它会妨碍集群间的相互通信,所以就需要关闭防火墙。 我们首先使用systemctl status firewalld命令查看防火墙状态,具体操作如图1-52所示。 图1-52 查看防火墙状态 关闭防火墙需要两步,首先使用systemctl stop firewalld命令停止防火墙,然后使用systemctl disable firewalld命令使防火墙失效,具体操作如图1-53所示。 图1-53 关闭防火墙 1.4.6创建Linux用户和用户组 在Hadoop平台搭建过程中,为了系统安全考虑,一般不直接使用超级用户 root,而是需要创建一个新的用户和用户组。我们使用useradd hadoop命令添加hadoop用户,使用passwd hadoop命令为Hadoop用户配置密码(配置密码:123456),具体操作如图1-54所示。 图1-54 创建hadoop用户和用户组 1.4.7 Linux SSH免密登录 SSH(Secure Shell)是可以在应用程序中提供安全通信的一个协议,通过SSH可以安全地进行网络数据传输,它的主要原理就是利用非对称加密体系,对所有待传输的数据进行加密,保证数据在传输时不被恶意破坏、泄露或者篡改。 但是Hadoop集群使用SSH不是用来进行数据传输的,而是在Hadoop集群启动和停止的时候,主节点需要通过SSH协议启动或停止从节点上面的进程。如果不配置SSH免密登录,对Hadoop集群的正常使用没有任何影响,但是在启动和停止Hadoop集群的时候,需要输入每个从节点的密码。可以想象一下,当集群规模比较大的时候,比如达到成百上千节点的规模,如果每次都要分别输入集群节点的密码,这种方法肯定是不可取的,所以要对Hadoop集群进行SSH免密登录的配置。 (1)如图1-55所示,进入hadoop用户的根目录,使用ssh-keygen -t rsa命令生成密钥对。 图1-55 生成密钥对 (2)如图1-56所示, 使用cd .ssh/进入.ssh目录,然后使用 cp id_rsa.pub authorized_keys命令将公钥文件id_rsa.pub 中的内容拷贝到相同目录下的authorized_keys文件中。 图1-56拷贝公钥文件 (3)如图1-57所示,切换到hadoop用户的根目录,然后为使用chmod 700 .ssh 以及chmod 600 .ssh/*命令分别为.shh目录,以及其子目录文件赋予相应的权限。 图1-57为.ssh目录及文件赋予相应的权限 (4)如图1-58所示,在命令行输入ssh hadoop1登录hadoop1,第一次登录需要输入yes进行确认,第二次以后登录则不需要,此时表明设置成功。 图1-58使用ssh命令登录hadoop1 1.4.8 JDK安装与配置 由于Hadoop框架是由Java语言开发并运行在JVM之上,所以需要在Linux中提前安装JDK环境。另外,安装Hadoop对JDK版本也有要求,由于安装的Linux系统是64位的Rochy linux8系统,所以需要安装与之相对应的64位JDK安装包。针对Linux系统下的JDK具体版本,可以选择目前比较稳定且常用的JDK1.8版本。 安装tar解压工具 [root@hadoop1 ~]# yum install tar -y (2)下载对应版本的jdk-8u141-linux-x64.tar.gz安装包,并上传至hadoop1节点的/home/hadoop/app目录下,JDK安装包所在目录如下所示: [hadoop@hadoop1 app]$ ls jdk-8u141-linux-x64.tar.gz (3)在当前目录下,使用tar命令对JDK进行解压,具体操作如下所示: [hadoop@hadoop1 app]$ tar -zxvf jdk-8u141-linux-x64.tar.gz 为了方便管理多版本JDK,使用ln命令创建JDK软连接,具体操作如下所示。 [hadoop@hadoop1 app]$ ln -s jdk1.8.0_141 jdk (4)在hadoop用户下,使用vi命令打开.bashrc配置文件,配置JDK环境变量,具体添加内容如下所示: [hadoop@hadoop1 app]$ vi ~/.bashrc JAVA_HOME=/home/hadoop/app/jdk CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH 使用source命令执行.bashrc文件,JDK环境变量才能生效,具体操作如下所示。 [hadoop@hadoop1 app]$ source ~/.bashrc [hadoop@hadoop1 app]$ echo $JAVA_HOME /home/hadoop/app/jdk (4)在hadoop用户下,使用Java命令查看JDK版本号,查看表示jdk安装成功,具体操作如下所示。 [hadoop@hadoop1 app]$ java -version java version "1.8.0_141" Java(TM) SE Runtime Environment (build 1.8.0_141-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode) 如果打印的信息能查看到JDK版本号,说明JDK安装成功。 教学思考:同学们对虚拟机,以及linux的安装兴趣都比较浓厚。对老师提出的问题也积极的做出回答。这是一个很好的开始。以后要引导同学们在以后的学习中能够更加努力,完全把这门课程学懂。 湖南软件职业技术大学课程教案 章节、专题 Hadoop安装与配置(一) 教学目标 及基本要求 训练学生正确熟练的安装配置Hadoop。 教 学 重 点 掌握伪分布安装与配置的的方法 教 学 难 点 掌握伪分布安装与配置的的方法 教学内容 与时间分配 任务项目(5分钟)、 二、课堂引入(5分钟) 三、讲授内容(65分钟) 四、学生答疑(5分钟) 五、课堂小结(5分钟) 六、实训任务布置(5分钟) 习题 实训:Hadoop安装与配置(一) 湖南软件职业技术大学课程教案 教学内容 (1)Hadoop下载与解压 1)下载对应版本的Hadoop安装包,并上传至hadoop1节点的/home/hadoop/app目录下,安装包所在目录如下所示: [hadoop@hadoop1 app]$ ls hadoop-3.3.1.tar.gz 2)在当前目录下,使用tar 命令解压Hadoop安装包,具体操作如下所示: [hadoop@hadoop1 app]$ tar -zxvf hadoop-3.3.1.tar.gz 3)为了方便管理多版本Hadoop,使用ln命令创建软连接,具体操作如下所示: [hadoop@hadoop1 app]$ ln -s hadoop-3.3.1 hadoop (2)配置Hadoop 在Hadoop安装目录下进入到etc/hadoop目录,修改Hadoop相关配置文件。 1)修改core-site.xml配置文件。 core-site.xml文件主要配置Hadoop的公有属性,具体配置内容如下所示。 [hadoop@hadoop1 hadoop]$ vi core-site.xml fs.defaultFS hdfs://hadoop1:9000 hadoop.tmp.dir /home/hadoop/data/tmp 2)修改hdfs-site.xml 配置文件。 hdfs-site.xml文件主要配置跟HDFS相关的属性,具体配置内容如下所示。 [hadoop@hadoop1 hadoop]$ vi hdfs-site.xml dfs.namenode.name.dir /home/hadoop/data/dfs/name dfs.datanode.data.dir /home/hadoop/data/dfs/data dfs.replication 1 dfs.permissions false 3)修改hadoop-env.sh配置文件。hadoop-env.sh文件主要配置跟hadoop环境相关的变量,这里主要修改JAVA_HOME的安装目录,具体配置内容如下所示。 [hadoop@hadoop1 hadoop]$ vi hadoop-env.sh export JAVA_HOME=/home/hadoop/app/jdk 4)修改mapred-site.xml配置文件。mapred-site.xml 文件主要配置跟MapReduce 相关的属性,这里主要将MapReduce的运行框架名称配置为YARN,具体配置内容如下所示。 [hadoop@hadoop1 hadoop]$ vi mapred-site.xml mapreduce.framework.name yarn yarn.app.mapreduce.am.env HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop mapreduce.map.env HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop mapreduce.reduce.env HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop 5)修改 yarn-site.xml配置文件。 yarn-site.xml文件主要配置跟YARN 相关的属性,具体配置内容如下所示。 [hadoop@hadoop1 hadoop]$ vi yarn-site.xml yarn.nodemanager.aux-services mapreduce_shuffle 6)修改workers配置文件。slaves文件主要配置哪些节点为datanode角色,由于目前搭建的是Hadoop伪分布集群,所以只需要填写当前主机的hostname即可,具体配置内容如下所示。 [hadoop@hadoop1 hadoop]$ vi workers hadoop1 7)配置Hadoop环境变量。在hadoop用户下,添加Hadoop环境变量,具体操作如下所示。 [hadoop@hadoop1 hadoop]$ vi ~/.bashrc JAVA_HOME=/home/hadoop/app/jdk HADOOP_HOME=/home/hadoop/app/hadoop CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH HADOOP_HOME 使用source命令执行.bashrc文件,才能使Hadoop环境变量生效,具体操作如下所示。 [hadoop@hadoop1 hadoop]$ source ~/.bashrc [hadoop@hadoop1 hadoop]$ hadoop version Hadoop 3.3.1 8)创建Hadoop相关数据目录。在hadoop用户下,创建Hadoop相关数据目录,具体操作如下所示。 [hadoop@hadoop1 hadoop]$ mkdir -p /home/hadoop/data/tmp [hadoop@hadoop1 hadoop]$ mkdir -p /home/hadoop/data/dfs/name [hadoop@hadoop1 hadoop]$ mkdir -p /home/hadoop/data/dfs/data (3)启动Hadoop伪分布集群 1)格式化主节点namenode。在Hadoop安装目录下,使用如下命令对NameNode进行格式化。 [hadoop@hadoop1 hadoop]$ bin/hdfs namenode -format 注意:第一次安装Hadoop集群需要对NameNode进行格式化,Hadoop集群安装成功之后,下次只需要使用脚本start-all.sh一键启动Hadoop集群即可。 2)启动Hadoop伪分布集群。在Hadoop安装目录下,使用脚本一键启动Hadoop集群,具体操作如下所示。 [hadoop@hadoop1 hadoop]$ sbin/start-all.sh 3)查看Hadoop服务进程。通过jps命令查看Hadoop伪分布集群的服务进程,具体操作如下所示。 [hadoop@hadoop1 ~]$ jps 10885 NodeManager 10327 DataNode 10522 SecondaryNameNode 10746 ResourceManager 10171 NameNode 11247 Jps 如果服务进程中包含Resourcemanager、Nodemanager、NameNode、DataNode和SecondaryNameNode等5个进程,这就说明Hadoop伪分布集群启动成功。 4)查看HDFS文件系统。在浏览器中输入http://hadoop1:9870/地址,通过web界面查看HDFS文件系统,具体操作如图1-1示。 图1-1通过web界面查看HDFS文件系统 备注:在windows平台要用hadoop1访问,必须在C:\Windows\System32\drivers\etc\hosts文件中配置,如图1-2所示。 图1-2在hosts文件中配置ip映射 5)查看YARN资源管理系统。在浏览器中输入http://hadoop1:8088/地址,通过web界面查看YARN资源管理系统,具体操作如图1-3所示。 图1-3通过web界面查看YARN资源管理系统 (4)测试运行Hadoop伪分布集群 Hadoop伪分布集群启动之后,我们以Hadoop自带的WordCount案例来检测Hadoop集群环境的可用性。 1)查看HDFS目录。在HDFS shell中,使用ls命令查看HDFS文件系统目录,具体操作如下所示。 [hadoop@hadoop1 hadoop]$ bin/hdfs dfs -ls / 由于是第一次使用HDFS文件系统,所以HDFS中目前没有任何目录和文件。 2)创建HDFS目录。在HDFS shell中,使用mkdir命令创建HDFS文件目录/test,具体操作如下所示。 [hadoop@hadoop1 hadoop]$ bin/hdfs dfs -mkdir /test 3)准备测试数据集。在Hadoop根目录下,新建words.log文件并输入测试数据,具体操作如下所示。 [hadoop@hadoop1 hadoop]$ vi words.log hadoop hadoop hadoop spark spark spark flink flink flink 4)测试数据上传至HDFS。使用put命令将words.log文件上传至HDFS的/test目录下,具体操作如下所示。 [hadoop@hadoop1 hadoop]$ bin/hdfs dfs -put words.log /test 5)运行WordCount案例。使用yarn脚本将Hadoop自带的WordCount程序提交到YARN集群运行,具体操作如下所示。 [hadoop@hadoop1 hadoop]$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /test/words.log /test/out 6)查看作业运行状态。在浏览器中输入http://hadoop1:8088/地址,通过web界面查看YARN中作业运行状态,具体操作如图1-4所示。 图1-4通过web界面查看YARN中作业运行状态 如果在YARN 集群的Web界面中,查看到WordCount作业最终的运行状态为SUCCESS,就说明MapReduce程序可以在YARN集群上成功运行。 7)查询作业运行结果。使用cat命令查看WordCount作业输出结果,具体操作如下所示。 [hadoop@hadoop1 hadoop]$ bin/hdfs dfs -cat /test/out/* flink 3 hadoop 3 spark 3 如果WordCount运行结果符合预期值,说明Hadoop伪分布式集群已经搭建成功! 2.2 Hadoop完全分布式环境搭建准备 2.2.1 Linux虚拟机克隆 Linux虚拟机克隆操作步骤如下: (1)如图1-5所示,在VMware中右键点击hadoop1节点,然后选择hadoop1——>管理——>克隆,进入克隆虚拟机向导,点击“下一页”。 图1-5 克隆虚拟机向导 (2)弹出如果1-6所示的克隆源页面,选择“虚拟机中的当前状态”然后点击“下一步”。 图1-6 选择克隆源 (3)弹出如图1-7所示的克隆类型界面,选择“创建见完整克隆”选项,然后点击“下一步”。 图1-7 选择克隆类型 (4)弹出如图1-8所示的界面,我们可以输入虚拟机的名称以及存储位置,然后点击“完成”按钮。 图1-8 输入新虚拟机的名称 (5)弹出如图1-9的克隆进度界面,耐心等待虚拟机克隆进度条完成。 图1-9克隆虚拟机 (6)如图1-10所示,点击“关闭”按钮,完成虚拟机的克隆。 图1-10 完成虚拟机克隆 (7)如图1-11所示,使用与hadoop1相同的账号密码登录hadoop2(用户名:root 密码:123456)。 图1-11 启动登录 2.2.2 网络及工具配置 (1)配置静态IP 配置静态IP步骤如下: 1)如图1-12所示,在命令行输入:vi/etc/sysconfig/network-scripts/ifcfg-ens33命令。 图1-12 配置静态ip(1) 2)如图1-13所示,修改ip地址为192.168.249.162(可根据实际情况配置)。 图1-13 配置静态ip(2) 3)如图1-14所示,使用systemctl restart NetworkManager重启网络服务。 图1-14 重启网络服务 (4)如图1-15所示,输入ping www.baidu.com命令,测试虚拟机是否能够联网,收到回复表示能够联通。 图1-15 测试网络 (2) Xshell连接 Xshell连接步骤如下: 1)如图1-16所示,静态IP地址配置成功之后,可以通过xshell连接克隆之后的虚拟机,在xshell中新建会话,配置好需要连接的虚拟机。 图1-16 配置连接 2)如图1-17所示,然后配置用户身份验证,输入用户名和密码。 图1-17 配置用户身份验证 3)连接配置好的虚拟机,出现图1-18表示连接成功。 图1-18 通过xshell连接 (3) 修改主机名 修改主机名步骤如下: 1)由于是克隆的,主机还是hadoop1,我们需要修改为hadoop2,使用命令vi /etc/hostname修改主机名,具体操作如图1-19所示。 图1-19 修改主机名 2)为了使用主机名进行访问,我们需要配置主机名映射,输入命令vi /etc/hosts配置主机名映射,具体操作如图1-20所示。 图1-20 修改主机名映射 (3)关闭防火墙 关闭防火墙步骤如下: 1)如图1-21所示,使用查看systemctl status firewalld防火墙状态,如果处于“running”状态表示防火墙开启。 图1-21 查看防火墙状态 2)关闭防火墙分两步进行,首先使用命令systemctl stop firewalld停止防火墙,然后使用命令systemctl disable firewalld使防火墙失效,具体操作如图1-22所示。 图1-22 关闭防火墙 注意:由于克隆hadoop1,前面已经关闭防火墙此步骤可以省略,jdk安装也可省略。 (4) FileZilla连接 在FileZilla中新建站点,进行配置,具体操作如图1-23所示。 图1-23 FileZilla连接虚拟机 备注:使用同样步骤克隆hadoop3并配置ip(ip:192.168.249.163)。 (5)配置Hosts文件 1)使用命令vi /etc/hosts配置ip地址映射,具体操作如图1-24所示,(备注:hadoop1、hadoop2、hadoop3节点hosts文件配置一样)。 图1-24 配置Hosts文件 2)测试hadoop1节点访问hadoop2节点,具体操作如图1-25所示。 图1-25 测试节点互访 2.2.3 时钟同步 (1)我们使用命令timedatectl set-timezone "Asia/Shanghai"统一时区为上海时区,具体操作如图1-26所示。 图1-26 统一时区 (2)使用yum -y install chrony命令下载安装 chrony服务,中间遇到提问请输入y,具体操作如图1-27所示。 图1-27 下载安装 chrony (3)编辑 chrony 配置文件 vi /etc/chrony.conf 1. 注释掉: # pool 2.centos.pool.ntp.org iburst 2. 加入新的的时间服务器(可添加多个时间服务器): server ntp.aliyun.com iburst 图1-28 同步时间 (4)重启 chronyd 服务 systemctl restart chronyd (5)设置 chronyd 开机自启 systemctl enable chronyd (6)进行时间同步 chronyc makestep (7)查看时间是否同步 date 为了能够周期性执行时钟同步,我们需要加入定时计划任务,如需要每隔10分钟同步一下时钟,使用crontab -e命令,输入如下内容: 0-59/10 * * * * /usr/bin/chronyc makestep 具体操作如图1-29所示。 图1-29 加入定时任务 备注:3个节点执行一遍。 2.2.4 集群SSH免密登录 (1)各个节点SSH免密登录。SSH(Secure Shell)是可以在应用程序中提供安全通信的一个协议,通过SSH可以安全地进行网络数据传输,它的主要原理就是利用非对称加密体系,对所有待传输的数据进行加密,保证数据在传输时不被恶意破坏、泄露或者篡改。 但是Hadoop集群使用SSH不是用来进行数据传输的,而是在Hadoop集群启动和停止的时候,主节点需要通过SSH协议启动或停止从节点上面的进程。如果不配置SSH免密码免密登录,对Hadoop集群的正常使用没有任何影响,但是在启动和停止Hadoop集群的时候,需要输入每个从节点的密码。可以想象一下,当集群规模比较大的时候,比如达到成百上千节点的规模,如果每次都要分别输入集群节点的密码,这种方法肯定是不可取的,所以要对Hadoop集群进行SSH免密码免密登录的配置。 SSH免密码免密登录的功能跟用户密切相关,为哪个用户配置了SSH,那个用户就具有SSH免密码免密登录的功能,没有配置的用户则不具备该功能,这里选择为hadoop用户配置SSH免密码免密登录。 首先在控制台,使用su命令切换到hadoop用户的根目录,然后使用ssh-keygen -t rsa命令(ssh-keygen是秘钥生成器,-t 是一个参数,rsa 是一种加密算法)生成秘钥对(即公钥文件id_rsa.pub和私钥文件id_rsa)。 由于hadoop1先前已经配置过免密登录,我们直接从hadoop2开始配置(注意是在hadoop用户)配置hadoop2节点免密登录的步骤如下,首先使用su - hadoop命令切换至hadoop用户,然后使用rm -rf .ssh/删除克隆过来的ssh目录,最后通过ssh-keygen -t rsa生成秘钥,具体操作如图1-30所示。 图1-30 生成秘钥 (2)将公钥文件id_rsa.pub 中的内容拷贝到相同目录下的authorized_keys文件中。使用cd .ssh/ 进入ssh目录,使用cp id_rsa.pub authorized_keys复制秘钥到authorized_keys文件,最后通过cat authorized_keys查看秘钥是否复制成功,具体操作如图1-31。 图1-31 拷贝公钥到authorized_keys文件中 (3)切换到hadoop用户的根目录,然后为.ssh目录及文件赋予相应的权限。具体操作如图1-32所示。 图1-32 为.ssh目录及文件赋予相应的权限 (4)使用ssh命令登录hadoop2,第一次登录需要输入yes进行确认,第二次以后登录则不需要,此时表明设置成功,具体操作如图1-33所示。 图1-33 使用ssh登录hadoop2 (5)hadoop3节点按照hadoop2节点一样配置SSH免密登录即可。 (6)配置集群SSH免密登录。为了实现集群节点之间SSH免密登录,我们还需要将hadoop2和hadoop3的公钥id_ras.pub复制到hadoop1中的authorized_keys文件中,具体操作以及命令如图1-24、图1-35所示。 [hadoop@hadoop2 ~]$ cat ~/.ssh/id_rsa.pub | ssh hadoop@hadoop1 'cat >> ~/.ssh/authorized_keys' 图1-34 配置集群SSH免密登录(1) [hadoop@hadoop3 ~]$ cat ~/.ssh/id_rsa.pub | ssh hadoop@hadoop1 'cat >> ~/.ssh/authorized_keys' 图1-35 配置集群SSH免密登录(2) 然后将hadoop1中的authorized_keys文件分发到hadoop2和hadoop3节点,具体操作如图1-36、图1-37所示: [hadoop@hadoop1 .ssh]$ scp -r authorized_keys hadoop@hadoop2:~/.ssh 图1-36 authorized_keys文件分发到hadoop2 [hadoop@hadoop1 .ssh]$ scp -r authorized_keys hadoop@hadoop3:~/.ssh/ 图1-37 authorized_keys文件分发到hadoop3 然后hadoop1节点就可以免密登录hadoop2和hadoop3节点,如图1-38所示。 图1-38 免密登录hadoop2、hadoop3 2.2.5 集群脚本开发 (1)创建tools目录,并准备脚本与配置文件。 (2)首先使用mkdir tools命令创建tools目录,并用ls命令查看,具体操作如图1-39所示。 图1-39 创建tools目录 (3)通过FileZilla上传脚本文件到tools文件夹并使用ls命令查看,具体操作如图1-40、图1-41所示。 图1-40 上传脚本文件 图1-41 查看脚本文件 (4)然后使用vi deploy.conf配置脚本,具体内容为: hadoop1,master,all, hadoop2,slave,all, hadoop3,slave,all, 具体操作如图1-42所示。 图1-42 配置脚本文件 (5)使用 chmod u+x deploy.sh runRemoteCmd.sh命令给脚本授予可执行权限并使用ls命令查看,具体操作如图1-43所示。 图1-43 给脚本授予可执行权限 (6)使用vi ~/.bashrc命令配置脚本环境变量,具体操作如图1-44所示。 图1-44 配置脚本环境变量(1) (7)将内容修改为,如图1-45的内容。 图1-45 配置脚本环境变量(2) (8)使用source ~/.bashrc 使配置生效,具体操作如图1-46所示。 图1-46 配置生效 (9)最后测试运行集群脚本,使用touch words.log创建words.log文件,然后使用deploy.sh words.log /home/hadoop/app slave命令分发文件到hadoop2、hadoop3,具体操作如图1-47所示。 图1-47 测试运行集群脚本 教学思考:今天内容主要是如何搭建hadoop伪分布环境,很多同学都认真听讲,实训问问题的特别多,以后必须细讲做好答疑。 湖南软件职业技术大学课程教案 章节、专题 Hadoop安装与配置(二) 教学目标 及基本要求 搭建完全分布式Hadoop集群的方法 教 学 重 点 搭建完全分布式Hadoop集群的方法 教 学 难 点 集群配置文件 教学内容 与时间分配 一、任务项目(5分钟)、 二、课堂引入(5分钟) 三、讲授内容(65分钟) 四、学生答疑(5分钟) 五、课堂小结(5分钟) 六、实训任务布置(5分钟) 习题 实训:Hadoop安装与配置(二) 湖南软件职业技术大学课程教案 教学内容 1.1搭建zookeeper集群 (1)下载并解压zookeeper 到官网(地址:http://Zookeeper.apache.org/releases.html# download)下载Zookeeper稳定版本的apache-zookeeper-3.8.4-bin.tar.gz安装包,然后上传至hadoop1 节点的/home/hadoop/app目录下并解压,具体操作如下所示。 #解压Zookeeper [hadoop@hadoop1 app]$ tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz #创建Zookeeper软连接 [hadoop@hadoop1 app]$ ln -s apache-zookeeper-3.8.4-bin zookeeper (2)修改zoo.cfg配置文件 在运行 Zookeeper 服务之前,需要新建一个配置文件。这个配置文件习惯上命名为zoo.cfg,并保存在conf子目录中,其核心内容如下所示。 [hadoop@hadoop1 app]$ cd zookeeper [hadoop@hadoop1 zookeeper]$ cd conf/ [hadoop@hadoop1 conf]$ ls configuration.xsl logback.xml zoo_sample.cfg [hadoop@hadoop1 conf]$ cp zoo_sample.cfg zoo.cfg [hadoop@hadoop1 conf]$ vi zoo.cfg #数据目录需要提前创建 dataDir=/home/hadoop/data/zookeeper/zkdata #日志目录需要提前创建 dataLogDir=/home/hadoop/data/zookeeper/zkdatalog #访问端口号 clientPort=2181 #server.每个节点服务编号=服务器ip地址:集群通信端口:选举端口 server.1=hadoop1:2888:3888 server.2=hadoop2:2888:3888 server.3=hadoop3:2888:3888 具体操作步骤如图1-1所示。 图1-1 修改zoo.cfg配置文件 (3)同步zookeeper安装目录 使用scp命令将hadoop1节点的Zookeeper安装目录,整体同步到集群的hadoop2和hadoop3节点,具体操作如下所示。 方法1:使用远程拷贝命令scp,操作步骤如下。 [hadoop@hadoop1 app]$scp -r zookeeper-3.4.6 hadoop@hadoop2:/home/hadoop/app/ [hadoop@hadoop1 app]$scp -r zookeeper-3.4.6 hadoop@hadoop3:/home/hadoop/app/ 方法2:使用集群脚本,操作步骤如下。 [hadoop@hadoop1 app]$ deploy.sh apache-zookeeper-3.8.4-bin /home/hadoop/app/ slave 然后分别在hadoop2和hadoop3节点上创建Zookeeper软连接,具体操作如下所示。 [hadoop@hadoop2 app]$ ln -s apache-zookeeper-3.8.4-bin zookeeper [hadoop@hadoop3 app]$ ln -s apache-zookeeper-3.8.4-bin zookeeper (4)创建数据和日志目录 在集群各个节点创建Zookeeper数据目录和日志目录,需要跟zoo.cfg配置文件保持一致,具体操作如下所示。 #创建Zookeeper数据目录 方法1:三个节点分别创建。 [hadoop@hadoop1 app]$mkdir -p /home/hadoop/data/zookeeper/zkdata [hadoop@hadoop2 app]$mkdir -p /home/hadoop/data/zookeeper/zkdata [hadoop@hadoop3 app]$mkdir -p /home/hadoop/data/zookeeper/zkdata 方法2:使用集群脚本。 [hadoop@hadoop1 ~]$ runRemoteCmd.sh 'mkdir -p /home/hadoop/data/zookeeper/zkdata' all 执行效果如图1-2所示。 图1-2 创建zkdata目录 #创建Zookeeper日志目录 方法1: [hadoop@hadoop1 app] mkdir -p /home/hadoop/data/zookeeper/zkdatalog [hadoop@hadoop2 app] mkdir -p /home/hadoop/data/zookeeper/zkdatalog [hadoop@hadoop3 app] mkdir -p /home/hadoop/data/zookeeper/zkdatalog 方法2:(必须安装配置相应脚本工具) [hadoop@hadoop1 ~]$ runRemoteCmd.sh 'mkdir -p /home/hadoop/data/zookeeper/zkdatalog' all 执行效果如图1-3所示。 图1-3 创建zkdatalog目录 (5)创建各节点服务编号 分别在Zookeeper集群各个节点,进入/home/hadoop/data/zookeeper/zkdata目录,创建文件myid,然后分别输入服务编号,具体操作如下所示: #hadoop1节点 [hadoop@hadoop1 zkdata]$ touch myid [hadoop@hadoop1 zkdata]$ echo 1 > myid #hadoop2节点 [hadoop@hadoop2 zkdata]$ touch myid [hadoop@hadoop2 zkdata]$ echo 2 > myid #hadoop3节点 [hadoop@hadoop3 zkdata]$ touch myid [hadoop@hadoop3 zkdata]$ echo 3 > myid 注意:每个节点服务编号的值是一个整形数字且不能重复。 (6)启动Zookeeper集群服务 1)在集群各个节点分别进入Zookeeper安装目录,然后使用如下命令启动Zookeeper服务。 方法1: [hadoop@hadoop1 zookeeper]$ bin/zkServer.sh start [hadoop@hadoop2 zookeeper]$ bin/zkServer.sh start [hadoop@hadoop3 zookeeper]$ bin/zkServer.sh start 方法2: [hadoop@hadoop1 ~]$ runRemoteCmd.sh '/home/hadoop/app/zookeeper/bin/zkServer.sh start' all 执行效果如图1-4所示。 图1-4 启动zookeeper集群 2)Zookeeper集群启动一会之后,通过如下命令查看Zookeeper集群状态。 方法1: [hadoop@hadoop:1 zookeeper]$ bin/zkServer.sh status [hadoop@hadoop2 zookeeper]$ bin/zkServer.sh status [hadoop@hadoop3 zookeeper]$ bin/zkServer.sh status 方法2: [hadoop@hadoop1 ~]$ runRemoteCmd.sh '/home/hadoop/app/zookeeper/bin/zkServer.sh status' all 执行效果如图1-5所示。 图1-5 查看zookeeper集群状态 如果在Zookeeper集群中,其中一个节点为leader领导者,另外两个节点是follower跟随者,说明Zookeeper集群安装部署成功。 1.2搭建完全分布式Hadoop集群 1.1.1 HDFS集训搭建 (1)下载解压Hadoop 首先到官网(地址:https://archive.apache.org/dist/hadoop/common/)下载Hadoop稳定版本的安装包,然后上传至hadoop1节点下的/home/hadoop/app目录下并解压,具体操作如下所示。 [hadoop@hadoop1 app]$ tar -zxvf hadoop-3.3.1.tar.gz //解压 [hadoop@hadoop1 app]$ ln -s hadoop-3.3.1 hadoop //创建软连接 [hadoop@hadoop1 app]$ cd /home/hadoop/app/hadoop/etc/hadoop/ //切换到配置目录 (2)修改HDFS配置文件 1)修改hadoop-env.sh配置文件。hadoop-env.sh文件主要配置跟hadoop环境相关的变量,这里主要修改JAVA_HOME的安装目录,具体操作如下所示。 [hadoop@hadoop1 hadoop]$ vi hadoop-env.sh export JAVA_HOME=/home/hadoop/app/jdk 2)修改core-site.xml配置文件。core-site.xml文件主要配置hadoop的公有属性,具体需要配置的每个属性如下所示。 [hadoop@hadoop1 hadoop]$ vi core-site.xml fs.defaultFS hdfs://mycluster hadoop.tmp.dir /home/hadoop/data/tmp ha.zookeeper.quorum hadoop1:2181,hadoop2:2181,hadoop3:2181 3)修改hdfs-site.xml配置文件。hdfs-site.xml文件主要配置跟HDFS相关的属性,具体需要配置的每个属性如下所示。 [hadoop@hadoop1 hadoop]$ vi hdfs-site.xml dfs.namenode.name.dir file:/home/hadoop/data/dfs/name dfs.datanode.data.dir file:/home/hadoop/data/dfs/data dfs.journalnode.edits.dir /home/hadoop/data/journaldata/jn dfs.nameservices mycluster dfs.ha.namenodes.mycluster nn1,nn2,nn3 dfs.namenode.rpc-address.mycluster.nn1 hadoop1:8020 dfs.namenode.rpc-address.mycluster.nn2 hadoop2:8020 dfs.namenode.rpc-address.mycluster.nn3 hadoop3:8020 dfs.namenode.http-address.mycluster.nn1 hadoop1:9870 dfs.namenode.http-address.mycluster.nn2 hadoop2:9870 dfs.namenode.http-address.mycluster.nn3 hadoop3:9870 dfs.namenode.shared.edits.dir qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster dfs.client.failover.proxy.provider.mycluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files /home/hadoop/.ssh/id_rsa dfs.ha.automatic-failover.enabled true dfs.permissions.enabled false 4)配置workers文件。workers文件是根据集群规划配置DataNode节点所在的主机名,具体操作如下所示。 [hadoop@hadoop1 hadoop]$ vi workers hadoop1 hadoop2 hadoop3 5)向所有节点远程复制Hadoop安装目录。在hadoop1节点,切换到/home/hadoop/app目录下,将Hadoop安装目录远程复制到hadoop2和hadoop3节点,具体操作如下两种方法: 方法1: [hadoop@hadoop1 app]$scp -r hadoop-3.3.1 hadoop@hadoop2:/home/hadoop/app/ [hadoop@hadoop1 app]$scp -r hadoop-3.3.1 hadoop@hadoop3:/home/hadoop/app/ 方法2: [hadoop@hadoop1 hadoop]$ deploy.sh /home/hadoop/app/hadoop-3.3.1 /home/hadoop/app slave 然后在hadoop2和hadoop3节点上分别创建软连接,具体操作如下所示。 [hadoop@hadoop2 app]$ ln -s hadoop-3.3.1 hadoop [hadoop@hadoop3 app]$ ln -s hadoop-3.3.1 hadoop 备注:复制前删除使用rm -rf hadoop hadoop-3.3.1命令hadoop1、hadoop2上的hadoop hadoop-3.3.1目录 1.1.2 启动HDFS集群服务 (1)启动Zookeeper集群 在集群所有节点分别启动Zookeeper服务,具体操作如下所示。 方法1:分别在三个节点启动。 [hadoop@hadoop1 zookeeper]$ bin/zkServer.sh start [hadoop@hadoop2 zookeeper]$ bin/zkServer.sh start [hadoop@hadoop3 zookeeper]$ bin/zkServer.sh start 方法2:使用远程执行脚本。 [hadoop@hadoop1 hadoop]$ runRemoteCmd.sh '/home/hadoop/app/zookeeper/bin/zkServer.sh start ' all (2)启动Journalnode集群 在集群所有节点分别启动Journalnode服务,具体操作如下所示。 方法1:分别在三个节点启动。 [hadoop@hadoop1 hadoop]$sbin/hadoop-daemon.sh start journalnode [hadoop@hadoop2 hadoop]$sbin/hadoop-daemon.sh start journalnode [hadoop@hadoop3 hadoop]$sbin/hadoop-daemon.sh start journalnode 方法2:使用远程执行脚本。 [hadoop@hadoop1 hadoop]$ runRemoteCmd.sh '/home/hadoop/app/hadoop/sbin/hadoop-daemon.sh start journalnode' all (3)格式化主节点NameNode 在hadoop1节点(NameNode主节点)上,使用如下命令对NameNode进行格式化。 [hadoop@hadoop1 hadoop]$ bin/hdfs namenode -format / /n amenode 格式化 [hadoop@hadoop1 hadoop]$ bin/hdfs zkfc -formatZK //格式化高可用 [hadoop@hadoop1 hadoop]$bin/hdfs namenode //启动namenode (4)备用NameNode同步主节点元数据 在hadoop1节点启动NameNode服务的同时,需要在hadoop2,hadoop3节点(NameNode备用节点)上执行如下命令同步主节点的元数据。 [hadoop@hadoop2 hadoop]$ bin/hdfs namenode -bootstrapStandby [hadoop@hadoop3 hadoop]$ bin/hdfs namenode -bootstrapStandby (5)关闭Journalnode集群 hadoop2节点同步完主节点元数据之后,紧接着在hadoop1节点上,按下〈Ctrl+C〉组合键来结束NameNode进程,然后关闭所有节点上面的Journalnode进程,具体操作如下所示。 [hadoop@hadoop1 hadoop]$sbin/hadoop-daemon.sh stop journalnode [hadoop@hadoop2 hadoop]$ sbin/hadoop-daemon.sh stop journalnode [hadoop@hadoop3 hadoop]$ sbin/hadoop-daemon.sh stop journalnode (6)一键启动HDFS集群 如果上面操作没有问题,在hadoop1节点上,可以使用脚本一键启动HDFS集群所有相关进程,具体操作下所示。 [hadoop@hadoop1 hadoop]$ sbin/start-dfs.sh 注意:第一次安装HDFS需要对NameNode进行格式化,HDFS集群安装成功之后,以后使用start-dfs.sh脚本一键启动HDFS集群的所有进程即可。 1.1.3 HDFS集群测试 在浏览器中分别输入网址http://hadoop1:9870,以及http://hadoop3:9870通过 Web 界面查看hadoop1、hadoop3节点的NameNode的状态,结果如图1-6所示。该节点的状态为standby,表示HDFS不能通过hadoop1节点的NameNode对外提供服务。 图1-6 standby状态的NameNode界面 在浏览器中输入网址http://hadoop2:9870,通过Web界面查看hadoop2节点的NameNode的状态,结果如图2-54所示。该节点的状态为active,表示hadoop2节点的NameNode可以对外提供服务。 图1-7 active状态的NameNode界面 注意:某一时刻只能有一个NameNode节点处于active状态。 在hadoop1节点的/home/hadoop/app/hadoop目录下创建words.log文件,然后上传至 HDFS文件系统的/test目录下,检查 HDFS是否能正常使用,具体操作如下: #本地新建words.log文件 [hadoop@hadoop1 hadoop]$ vi words.log hadoop hadoop hadoop spark spark spark flink flink flink [hadoop@hadoop1 hadoop]$ hdfs dfs -mkdir /test #上传本地文件words.log [hadoop@hadoop1 hadoop]$ hdfs dfs -put words.log /test #查看words.log是否上传成功 [hadoop@hadoop1 hadoop]$ hdfs dfs -ls /test /test/words.log 如果上面操作没有异常,说明HDFS分布式集群搭建成功。 1.1.4 YARN集群配置 (1)修改 mapred-site.xml配置文件 mapred-site.xml 文件主要配置跟 MapReduce 相关的属性,这里主要将MapReduce的运行环境指定为YARN,核心配置如下所示。 [hadoop@hadoop1 hadoop]$ vi mapred-site.xml mapreduce.framework.name yarn (2)修改 yarn-site.xml配置文件 yarn-site.xml 文件主要配置跟YARN 相关的属性,核心配置如下所示。 [hadoop@hadoop1 hadoop]$ vi yarn-site.xml yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.ha.enabled true yarn.resourcemanager.cluster-id cluster-yarn1 yarn.resourcemanager.ha.rm-ids rm1,rm2,rm3 yarn.resourcemanager.hostname.rm1 hadoop1 yarn.resourcemanager.webapp.address.rm1 hadoop1:8088 yarn.resourcemanager.address.rm1 hadoop1:8032 yarn.resourcemanager.scheduler.address.rm1 hadoop1:8030 yarn.resourcemanager.resource-tracker.address.rm1 hadoop1:8031 yarn.resourcemanager.hostname.rm2 hadoop2 yarn.resourcemanager.webapp.address.rm2 hadoop2:8088 yarn.resourcemanager.address.rm2 hadoop2:8032 yarn.resourcemanager.scheduler.address.rm2 hadoop2:8030 yarn.resourcemanager.resource-tracker.address.rm2 hadoop2:8031 yarn.resourcemanager.hostname.rm3 hadoop3 yarn.resourcemanager.webapp.address.rm3 hadoop3:8088 yarn.resourcemanager.address.rm3 hadoop3:8032 yarn.resourcemanager.scheduler.address.rm3 hadoop3:8030 yarn.resourcemanager.resource-tracker.address.rm3 hadoop3:8031 yarn.resourcemanager.zk-address hadoop1:2181,hadoop2:2181,hadoop3:2181 yarn.resourcemanager.recovery.enabled true yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLAS SPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME (3)向所有节点同步YARN配置文件 在hadoop1节点上修改完YARN相关配置之后,将修改的配置文件远程复制到hadoop2节点和hadoop3节点,具体操作如下所示。 #将 mapred-site.xml文件远程复制到hadoop2和hadoop3节点 方法1: [hadoop@hadoop1 hadoop]$scp -r mapred-site.xml hadoop@hadoop2:/home/hadoop/app/hadoop/etc/hadoop [hadoop@hadoop1 hadoop]$scp -r mapred-site.xml hadoop@hadoop3:/home/hadoop/app/hadoop/etc/hadoop 方法2: [hadoop@hadoop1 hadoop]$ deploy.sh mapred-site.xml /home/hadoop/app/hadoop/etc/hadoop/ slave #将yarn-site.xml文件远程复制到hadoop2和hadoop3节点 方法1: [hadoop@hadoop1 hadoop]$scp -r yarn-site.xml hadoop@hadoop2:/home/hadoop/app/hadoop/etc/hadoop [hadoop@hadoop1 hadoop]$scp -r yarn-site.xml hadoop@hadoop3:/home/hadoop/app/hadoop/etc/hadoop 方法2: [hadoop@hadoop1 hadoop]$ deploy.sh yarn-site.xml /home/hadoop/app/hadoop/etc/hadoop/ slave 1.1.5 启动YARN集群服务 YARN HA的实现依赖于Zookeeper,所以需要优先启动Zookeeper集群。因为前面操作已经启动Zookeeper集群,所以该步骤可以跳过。 启动YARN集群 在hadoop1节点上,使用脚本一键启动YARN集群,具体操作如下所示。 [hadoop@hadoop1 hadoop]$ sbin/start-yarn.sh 1.1.6 YARN集群测试 (1)Web界面查看YARN集群 在浏览器中输入网址http://hadoop1:8088(或者http://hadoop2:8088;http://hadoop3:8088),通过 Web 界面查看YARN集群信息,结果如图1-8所示。 图1-8 Web界面查看YARN集群 (2)YARN集群测试 为了测试YARN集群是否可以正常运行MapReduce程序,我们以Hadoop自带的wordcount示例来进行演示,具体操作如图1-9所示。 [hadoop@hadoop1 hadoop]$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /test/words.log /test/out 图1-9 YARN集群运行wordcount MapReduce作业在YARN集群执行状态结果,如图1-10所示。 图1-10 MapReduce作业运行状态 如果上述操作没有异常,最终作业的状态信息显示为SUCCEEDED,就说明MapReduce程序在YARN集群上面运行成功,从而说明Hadoop分布式集群已经全部搭建成功。 通过命令查询执行结果: [hadoop@hadoop1 hadoop]$ bin/hdfs dfs -cat /test/out/* 执行结果如图1-11所示。 图1-11MapReduce作业运行结果 教学思考:今天的内容不算太难,但是发现同学们不会做笔记。没有注意细节,以后要重点提醒 湖南软件职业技术大学课程教案 章节、专题 Hive的安装配置(一) 教学目标 及基本要求 使学生了解Hive概述、Hive原理及架构,掌握Hive的安装部署 教 学 重 点 Hive的安装部署 教 学 难 点 Hive的安装部署 教学内容 与时间分配 一、任务项目(5分钟)、 二、课堂引入(5分钟) 三、讲授内容(65分钟) 四、学生答疑(5分钟) 五、课堂小结(5分钟) 六、实训任务布置(5分钟) 习题 实训:相关Hadoop生态圈组件的安装与配置 湖南软件职业技术大学课程教案 教学内容 Hive技术的出现降低了大数据学习门槛,很多传统数据分析人员可以直接使用Hive进行了大数据分析,接下来先初步了解Hive的基本概念 3.1.1 Hive定义 Hive是构建在Hadoop之上的离线分析系统,主要用于存储和处理海量结构沪建安数据。这些海量结构化数据一般存储就在HDFS上,Hive可以将上面的数据映射到一张数据表,赋予数据一种表结构,同时Hive提供了丰富的类SQL(简称HQL)语言对表中的数据进行统计分析。Hive首先对HQL语言进行解析和转换,生成一系列MapReduce任务,然后再Hadoop集群上执行MapReduce任务完成对数据的处理。这样,不熟悉MapReduce的用户也能很方便地利用HQL语句对数据进行查询、分析、汇总。目前,Hive已经是一个非常成功的Apache项目,很多公司和组织都将Hive当做大数据仓库工具。 3.1.2 Hive产生的背景 Hive的诞生源于 Facebook 的日志分析需求,面对海量的结构化数据, Hive能够以较低的成本完成以往需要大规模数据库才能完成的任务,并且学习门槛相对较低,应用开发灵活且高效。后来Facebook将Hive开源给了 Apache,成为 Apache 的一个顶级项目,至此Hive在大数据应用方面得到了快速的发展和普及。图3-1为Facebook的图标。 图3-1 facebook 3.1.3 Hive的优缺点 使用Hive进行大数据分析,既有很多优点,也存在一些缺点,虽然降低了开发成本和学习成本,但是也有不适合的应用场景。 1. Hive的优点 (1)Hive适合数据的批处理,解决了传统关系型数据库在海量数据处理上的瓶颈。 (2)Hive构建在Hadoop之上,充分利用了集群的存储资源、计算资源。 (3)Hive学习使用成本低,支持标准的SQL语法,这样就免去了编写MapReduce程序的过程,减少了开发成本。 (4)具有良好的扩展性,且能够实现与其他组件的集成开发。 2. Hive的缺点 (1)HQL的表达能力依然有限,不支持迭代计算,有些复杂的运算用 HQL不易表达,还需要单独编写MapReduce来实现。 (2)Hive的运行效率低、延迟高,这是因为Hive底层计算引擎默认为MapReduce,而MapReduce是离线计算框架。 (3)Hive的调优比较困难,由于HQL语句最终会转换为MapReduce任务,所以Hive的调优还需要考虑MapReduce层面的优化。 3.1.4 Hive在Hadoop生态系统中的位置 Hive在hadoop生态系统中承担着数据仓库的角色,如图3-2所示。Hive能够管理Hadoop中的数据,同时可以查询和分析Hadoop中的数据。 图3-2 Hive在Hadoop生态系统中的位置 3.1.5 Hive和Hadoop的关系 Hive利用HDFS来存储数据,利用MapReduce来查询分析数据,那么Hive与Hadoop之间的关系总结如下。 (1)Hive需要构建在Hadoop集群之上。 (2)Hive中的所有数据都存储在Hadoop分布式文件系统中。 (3)对HQL查询语句的解释、优化、生成查询计划等过程均是由 Hive 完成的,而查询计划被转化为 MapReduce 任务之后需要运行在 Hadoop 集群之上。 3.2 Hive原理及架构 Hive是构建在Hadoop之上的sql引擎,它重用了Hadood中的HDFS和MapReduce等。Hive是Hadoop生态中的重要组成部分,也是目前应用最广泛的SQL on Hadoop解决方案。 3.2.1 Hive的设计原理 Hive 是一种构建在Hadoop之上的数据仓库工具,可以使用HQL 语句对数据进行分析和查询,而Hive 的底层数据都存储在HDFS中。Hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到指定的HDFS目录下,因此,Hive 不支持对数据的修改。Hive的特点如下: (1)支持索引,加快数据查询。 (2)不同的存储类型,例如,纯文本文件、HBase 中的文件。 (3)将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间。 (4)可以直接使用存储在Hadoop 文件系统中的数据。 (5)内置大量用户自定义函数(user define function,简称UDF)来对时间、字符串进行操作,支持用户扩展UDF 函数来完成内置函数无法实现的操作。 (6)HQL语句最终会被转换为MapReduce任务运行在Hadoop集群之上。 3.2.2 Hive的体系结构 Hive的体系架构如图3-3所示。 图 3-3 Hive体系结构 Hive体系架构主要包含用户接口、Thrift服务器、Hive驱动引擎、元数据库和Hadoop集群。 1.用户接口 用户接口主要有CLI,Client 和 WUI三个。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。 WUI是通过浏览器访问Hive。 2. Thrift服务器 Thrift服务器是基于socket通讯,支持跨语言。Hive Thrift服务简化了在多编程语言中运行Hive的命令。绑定支持C++,Java,PHP,Python和Ruby语言。 3.Hive驱动引擎 解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。 4.元数据库 Hive的数据由两部分组成:数据文件和元数据。元数据用于存放Hive库的基础信息,它存储在关系数据库中,如 mysql、derby。元数据包括:数据库信息,表的名字,表的列和分区及其属性,表的属性,表的数据所在目录等。 5.Hadoop集群 Hive的数据文件存储在HDFS中,大部分的查询由 MapReduce 完成。(对于包含*的查询,比如 select * from tbl 不会生成 MapRedcue 作业)。 3.2.3 Hive的运行机制 Hive的运行机制如图8-4所示。 图3-4 Hive的运行机制 (1)用户通过用户接口连接hive,发布HQL。 (2)Hive解析查询并指定逻辑查询计划。 (3)Hive将查询转换成MapReduce作业。 (4)Hive在Hadoop上执行MapReduce作业。 3.2.4 Hive的转换过程 HQL转换为MapReduce作业的过程如图8-5所示,有如下几个步骤: (1)通过开源语法分析器Antlr完成SQL解析,将SQL转化为抽象语法树(AST AbstractSyntaxTree)。 (2)遍历抽象语法树,生成查询的基本组成单元QueryBlock,是一个递归的过程,QueryBlock包括输入源、计算过程、输出,是一个子查询。 (3)遍历OueryBlock,翻译为执行操作树OperatorTree。 (4)对OperatorTree进行优化,如分桶Map端聚合、合并相关的操作、将过滤操作提前。 (5)遍历OperatorTree,翻译为MapReduce任务。 (6)进行物理层优化,生成最终的执行计划。 图3-5 HQL转换为MapReduce作业的过程 3.2.5 Hive的数据类型 Java有自己的数据类型,包含基本数据类型和引用数据类型。那么Hive也有自己的数据类型,包含基本数据类型和复杂数据类型。 1.Hive的基本数据类型 如表3-1所示,hive的基本数据类型有:TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、BOOLEAN、STRING。 表3-1 Hive的基本数据类型 2.Hive的复杂数据类型 如表3-2所示,Hive包含3种复杂的数据类型,即Array、Map和Struct。 表3-2 Hive复杂数据类型 3.2.6 Hive的数据存储 1.表(table) Hive的表在逻辑上由存储的数据和描述表中数据形式的相关元数据组成。数据一般存放在HDFS中,但它也可以放在其他任何Hadoop文件系统中,包括本地文件系统或S3。Hive把元数据存放在关系型数据库中,而不是放在HDFS中。在Hive中创建表时,默认情况下Hive负责管理数据。这意味着Hive把数据移入它的“仓库目录”。另外一种选择是创建一个外部表(external table),这会让Hive到仓库目录以外的位置访问数据。 2.分区(Partition) Hive把表组织成分区。这是一种根据分区列(如日期)的值对表进行粗略划分的机制。使用分区可以加快数据分片的查询速度。以分区的常用情况为例,如日志文件的每条记录包含一个时间戳。如果我们根据日期来对它进行分区,那么同一天的记录就会被存放在同一个分区中。这样做的优点是:对于限制到某个或者某些特定日期的查询,它们的处理可以变得非常高效。因为它们只需要扫描查询范围内分区中的文件。注意,使用分区并不会影响大范围查询的执行,我们仍然可以查询跨多个分区的整个数据集。 3.桶(Bucket) 表或者分区可以进一步分为桶。它会为数据提供额外的结构以获得更高效的查询处理。例如,通过用户ID来划分桶,我们可以在所有用户集合的随机样本上快速计算基于用户的查询。 3.3 Hive的安装部署 Hive是一个客户端工具并没有集群的概念,所以Hive的安装部署相对简单。一般情况下,由于Hive的元数据信息存储在第三方数据库中(如MySQL),所以在安装Hive之前需要首先安装MySQL数据库。由于硬件资源有限,我们从Hadoop集群中选择hadoop1节点来安装部署Hive客户端以及MySQL元数据库即可。 3.3.1安装MySQL MySQL数据库的安装有离线和在线安装两种方式,为了方便起见,我们选择在线安装方式。 (1)在线安装MySQL。在hadoop1节点上,使用yum命令在线安装MySQL数据库,具体操作如下所示。 [root@hadoop1 ~]# yum install mysql-server (2)启动mysql服务。MySQL数据库安装成功之后,通过命令行启动MySQL服务,具体操作如下所示。 [root@hadoop1 ~]# systemctl start mysqld [root@hadoop1 ~]# systemctl enable mysqld (3)设置MySQL root用户密码。MySQL刚刚安装完成,默认root用户是没有密码的,需要登录MySQL设置root用户密码,具体步骤如下。 因为MySQL默认没有密码,所以使用root用户可直接登录MySQL,输入密码时可按Enter键回车即可,具体操作如下所示。 [root@hadoop1 ~]# mysql -u root -p Enter password: ...... mysql> 在MySQL客户端设置root用户密码,具体操作如下所示。 mysql>alter user'root'@'localhost' identified with mysql_native_password by 'root'; 设置完MySQL root用户密码之后,退出并重新登录MySQL,用户名为:root,密码为:root。 [root@hadoop1 ~]# mysql -u root –p Enter password: mysql> 如果能成功登录MySQL,就说明MySQL 的root用户密码设置成功。 (4)创建Hive账户。 ①首先输入如下命令创建Hive账户,操作命令如下。 mysql>create user 'hive'@'hadoop1' identified by 'hive'; mysql>create user 'hive'@'%' identified by 'hive'; ②将MySQL所有权限授予Hive账户,操作命令如下所示。 mysql>GRANT ALL PRIVILEGES ON *.* TO 'hive'@'hadoop1' WITH GRANT OPTION; ③将MySQL所有权限授予Hive账户,并允许所有ip访问。 mysql>GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION; ④通过命令使上述授权生效,操作命令如下所示。 mysql> flush privileges; ⑤如果上述操作成功,就可以使用Hive账户登录MySQL数据库,具体命令如下。 [root@hadoop1 ~] mysql -h hadoop1 -u hive -p ⑥创建hive数据库。 mysql> create database hive; 3.3.2安装Hive Hive的安装比较简单,因为Hive底层存储依赖HDFS,底层计算默认依赖MapReduce,所以我们选择一个节点部署Hive客户端,通过Hive客户端能将Hive 查询任务提交到Hadoop集群运行即可。 1.下载Hive 到官网(http://hive.apache.org/down/oads.html)下载 Hive 安装包apache-hive-3.1.3-bin.tar.gz,然后上传至hadoop1节点的/home/hadoop/app目录下。 2.解压Hive 在hadoop1节点上,使用解压命令解压Hive安装包,具体操作如下所示。 [hadoop@hadoop1 app]$ tar -zxvf apache-hive-3.1.3-bin.tar.gz 然后创建hive软连接,具体操作如下所示。 [hadoop@hadoop1 app]$ ln -s apache-hive-3.1.3-bin hive 3.修改hive-site.xml配置文件 进入hive的conf目录下发现hive-site.xml文件不存在,需要从默认配置文件复制一份,具体操作如下所示。 [hadoop@hadoop1 conf]$ cp hive-default.xml.template hive-site.xml 然后在hive-site.xml配置文件中,修改元数据库相关配置,修改内容如下所示。 [hadoop@hadoop1 conf]$ vi hive-site.xml #配置连接驱动名为com.mysql.jdbc.Driver javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver i #修改连接MySQL的URL javax.jdo.option.ConnectionURL jdbc:mysql://hadoop1:3306/hive?characterEncoding=UTF-8 #修改连接数据库的用户名和密码 javax.jdo.option.ConnectionUserName hive javax.jdo.option.ConnectionPassword hive 4.配置Hive环境变量 打开.bashrc文件,配置Hive环境变量,具体操作如下所示。 [hadoop@hadoop1 conf]$ vi ~/.bashrc 修改为如下内容: JAVA_HOME=/home/hadoop/app/jdk HADOOP_HOME=/home/hadoop/app/hadoop HIVE_HOME=/home/hadoop/app/hive CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:/home/hadoop/tools:$HIVE_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH HADOOP_HOME HIVE_HOME 保存并退出,并用命令source ~/.bashrc使配置文件生效。 5.添加MySQL驱动包 下载mysql-connector-j-8.0.31.jar(地址:http://central.maven.org/maven2/mysql/)驱动包,然后上传至Hive的lib目录下即可。 6.修改Hive相关数据目录 修改hive-site.xml配置文件,更改相关数据目录,具体配置如下所示。 [hadoop@hadoop1 conf]$ vi hive-site.xml hive.querylog.location /home/hadoop/app/hive/iotmp hive.exec.local.scratchdir /home/hadoop/app/hive/iotmp hive.downloaded.resources.dir /home/hadoop/app/hive/iotmp 7.启动Hive服务 第一次启动Hive服务需要先进行初始化,具体操作如下所示。 [hadoop@hadoop1 hive]$ bin/schematool -dbType mysql -initSchema 然后再执行bin/hive脚本启动Hive服务,具体操作如下所示。 [hadoop@hadoop1 hive]$ bin/hive hive>show databases; 如果上述操作没有问题,则说明Hive客户端已经安装成功。 教学思考:今天进行hive件的安装与配置,我发现有些同学mysql知识学的不够好,在今后的课程中如果需要用到前置知识,我会先跟他们复习相关的前置知识再进行知识讲解。 湖南软件职业技术大学课程教案 章节、专题 Hive的安装部署(二) 教学目标 及基本要求 使学生了解并掌握Hiveserver2服务部署以及使用Datagrip图形化客户端进行远程访问 教 学 重 点 Hiveserver2服务部署 教 学 难 点 Hiveserver2服务部署 教学内容 与时间分配 一、任务项目(5分钟)、 二、课堂引入(5分钟) 三、讲授内容(65分钟) 四、学生答疑(5分钟) 五、课堂小结(5分钟) 六、实训任务布置(5分钟) 习题 实训:Hive的安装部署(二) 湖南软件职业技术大学课程教案 教学内容 Hive的hiveserver2服务的作用是提供jdbc/odbc接口,为用户提供远程访问Hive数据的功能,例如用户期望在个人电脑中访问远程服务中的Hive数据,就需要用到Hiveserver2。 在远程访问Hive数据时,客户端并未直接访问Hadoop集群,而是由Hivesever2代理访问。由于Hadoop集群中的数据具备访问权限控制,所以此时需考虑一个问题:那就是访问Hadoop集群的用户身份是谁?是Hiveserver2的启动用户?还是客户端的登录用户? 1.1.1 hiveserver2部署 (1)Hadoop端配置 hivesever2的模拟用户功能,依赖于Hadoop提供的proxy user(代理用户功能),只有Hadoop中的代理用户才能模拟其他用户的身份访问Hadoop集群。因此,需要将hiveserver2的启动用户设置为Hadoop的代理用户,配置方式如下: 修改配置文件core-site.xml,然后记得分发三台机器,重启集群。 [hadoop@hadoop1 ~]$ cd /home/hadoop/app/hadoop/etc/hadoop [hadoop@hadoop1 hadoop]$ vi core-site.xml 增加如下配置: hadoop.proxyuser.hadoop.hosts * hadoop.proxyuser.hadoop.groups * hadoop.proxyuser.hadoop.users * (2)Hive端配置 在hive-site.xml文件中添加如下配置信息 [hadoop@hadoop102 conf]$ vim hive-site.xml hive.server1.thrift.bind.host hadoop1 hive.server1.thrift.port 10000 1.2使用Datagrip图形化客户端进行远程访问hive 1.1.1下载DataGrip 访问官方网址:https://www.jetbrains.com/datagrip/,效果如下图1-1所示: 图1-1 官方网址 如图1-2所示,点击右上角的Download按钮进入下载界面,可以看到DataGrip支持Windows、macOS、Linux三个系统,有30天的免费试用期,Windows版的PhpStorm包含.exe、.zip、.exe (ARM64)三种版本。 .exe:标准的可执行文件格式,适用 x86 架构的计算机和服务器。Intel和AMD的CPU下载这个版本。 .zip:绿色版,直接解压就能使用。 .exe (ARM64):专为 ARM64 架构设计的可执行文件格式,适用于基于 ARM 架构的设备。 图1-2 下载datagrip 1.1.2安装datagrip 双击下载的datagrip-2024.3.4.exe,进入DataGrip安装界面,点击下一步,效果如图1-3所示: 图1-3 安装欢迎界面 进入选择安装位置界面,默认安装在C:\Program Files\JetBrains\DataGrip 2024.3.3这个目录,可以点击右侧的浏览重新选择安装的目录,然后点击下一步,效果如图1-4所示: 图1-4 选择安装位置 进入安装选项界面,勾选创建桌面快捷方式,点击下一步,效果图1-5所示: 图1-5 勾选桌面快捷方式 进入选择开始菜单目录界面,点击下一步,效果如图1-6所示: 图1-6 选择开始菜单目录 进入安装中界面,等待DataGrip安装,效果如图图1-7所示: 图1-7 安装中界面 DataGrip安装完成后,进入DataGrip 安装程序结束界面,点击完成,效果图1-8所示: 图1-8完成安装 到此就完成了DataGrip的安装。 1.3.3配置DataGrip连接 1)启动hiveserver2 提示:必须先启动hadoop集群 [hadoop@hadoop1 hive]$ bin/hive --service hiveserver2 或者直接使用[hadoop@hadoop1 bin]$ hiveserver2 2)创建连接 如图1-9所示,新建一个hive的数据源。 图1-9 创建连接 3)配置连接属性 如图1-10所示,所有属性配置和Hive的客户端配置一致即可。初次使用,配置过程会提示缺少JDBC驱动,按照提示下载即可。 图1-10 配置连接属性 4)界面介绍 如图1-11所示,为datagrip的操作界面。 图1-11 datagrip操作界面 5)测试sql执行 如图1-12所示,输入sql代码,然后执行。 图1-12测试sql执行 注意:hive-3.1.2启动的时候,默认申请的JVM堆内存大小为256M,JVM堆内存申请太小,导致执行复杂的sql时经常会报错(如下图所示):java.lang.OutOfMemoryError: GC overhead limit exceeded,然后HiveServer2服务就异常了,因此最好调整一下HADOOP_HEAPSIZE这个参数。 解决方案: 进入hive下的conf目录,先把“hive-env.sh.template”拷贝一下,或者“mv”重命名 [hanxiao@hadoop102 conf]$ cp hive-env.sh.template hive-env.sh 然后vim命令修改“hive-env.sh” [hanxiao@hadoop102 conf]$ vim hive-env.sh 去掉第40行的“#”号(就可以把HADOOP_HEAPSIZE改为1024) export HADOOP_HEAPSIZE=1024 教学思考:本节课开始加快了学习速度,越来越复杂,有些同学还是没有养成做笔记的习惯,只听不记的话后期集群搭建的使用还是会非常陌生。要时刻提醒同学们做笔记。 湖南软件职业技术大学课程教案 章节、专题 DDL数据定义 教学目标 及基本要求 使学生掌握hive对数据库、数据表的操作 教 学 重 点 Hive对数据库的操作 Hive对数据表的操作 教 学 难 点 数据库、数据表的操作 教学内容 与时间分配 一、任务项目(5分钟)、 二、课堂引入(5分钟) 三、讲授内容(65分钟) 四、学生答疑(5分钟) 五、课堂小结(5分钟) 六、实训任务布置(5分钟) 习题 实训: DDL数据定义 湖南软件职业技术大学课程教案 教学内容 1.1.1创建数据库 Hive安装成功之后会存在一个默认的数据库default,为了方便管理不同业务数据,需要单独创建新的数据库。 (1)语法 创建数据库语法如下: CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)]; (2)解释 创建数据库子句含义解释如下: SCHEMA 和 DATABASE:两者含义相同,用途一样。 IF NOT EXISTS:创建数据库时若有同名数据库存在,缺少该子句将抛出错误信息。 COMMENT:表示为数据库添加描述信息。 LOCATION:存放数据库数据目录。 WITH DBPROPERTIES:表示为数据库添加描述信息,如创建时间、作者等信息。 (3)示例 创建名为weather的数据库,具体操作如图1-1所示。 create database if not exists weather comment "天气数据库" location "/user/hive/warehouse/mydb" with dbproperties ('creator'='hyy','date'='2024-10-09'); 图1-1创建weather数据库 通过describe命令查看已建数据库的详情,具体操作如图1-2所示。 describe database extended weather; 图1-2查看weather数据库详情 1.1.2使用数据库 在Hive中可以根据不同的业务创建不同数据库,如果想对某个业务的数据进行操作,首先需要使用或者进入该数据库。 (1)语法 使用数据库的语法如下所示: USE database_name; (2)解释 使用数据库子句含义解释如下: USE:如果想使用哪个数据库,直接使用USE关键字即可。 (3)示例 使用已经创建的数据库weather,具体操作如图1-3所示。 use weather; 图1-3使用weather数据库 查看当前使用的是哪个数据库,具体操作如图1-4所示。 select current_database(); 图1-4查看所使用的数据库 1.1.3 查询数据库 (1)展示所有数据库 1)语法 SHOW DATABASES [LIKE 'identifier_with_wildcards']; 2)解释 like通配表达式说明:*表示任意个任意字符,|表示或的关系。 示例 show databases like 'weath*'; 操作如图1-5所示。 图1-5 展示数据库 (2)查看数据库信息 1)语法 DESCRIBE DATABASE [EXTENDED] db_name; 2)案例 图1-29 dataease主界面 1.4 dataease数据可视化分析步骤如下: 1. 创建数据源 (1)弹出图1-30所示界面,选择数据源,点击“+”,录入数据源相关信息,选择mysql数据库点击“保存”。 图1-30 添加数据源 创建数据集 如图10-43所示,选择数据集,点击“新建文件夹”,创建一个nev的文件夹。 图1-30创建文件夹 (2)使用如下语句创建统计地区访问用户量的前6条的数据集,具体操作如图1-31所示。 SELECT sid_total,sessionid_total,ip_total,area,yearinfo,monthinfo FROM visit_dws WHERE grouptype='1' LIMIT 6; 图1-31 创建统计地区访问用户量的数据集 (3)使用如下语句创建统计会话页面排行榜的数据集,具体操作如图1-32所示。 SELECT distinct sessionid_total,from_url,yearinfo,monthinfo FROM visit_dws WHERE grouptype='3' AND from_url!="" ORDER BY sessionid_total DESC 图1-32创建统计会话页面排行榜的数据集 (4)创建统计访问用户量的数据集,具体操作如图1-33所示。 SELECT distinct sid_total,sessionid_total,ip_total,yearinfo,monthinfo FROM visit_dws WHERE grouptype='4'; 图1-33创建统计访问用户量的数据集的数据集 (5)使用如下语句统计创建渠道访问用户量的数据集,具体操作如图1-34所示。 SELECT distinct sid_total,sessionid_total,ip_total,origin_channel,yearinfo,monthinfo FROM visit_dws WHERE grouptype='2'; 图1-34创建统计创建渠道访问用户量的数据集 选择仪表板,点击+,创建一个文件夹,名字为nev,然后在文件中创建一个名为教育大数据分析的仪表板,具体操作如图1-35所示。 图1-35 创建仪表板 4添加不同视图 添加指标卡 添加访问用户量指标卡,点击视图按钮,添加一个访问用户量的视图,数据集为用户访问量,具体操作如图1-36所示。 图1-36 添加访问用户量视图 如图1-37所示,点击下一步按钮,选择指标卡,确定。 图1-37 选择图表类型 将sid_total拓展到指标栏,得到如图1-38所示。 图1-38设置指标栏 更改显示名称为sid统计访问用户量,效果如图10-52所示。 图1-38 更改显示名称 在样式中隐藏标题,效果如图1-39所示。 图1-39 隐藏标题 最后得到指标卡,效果如图1-40所示。 图1-40 指标卡效果图 采用复制并修改相应属性的方式,得到session_id访问用户量,ip访问用户量指标卡,效果如图1-41所示。 图1-41 指标卡效果图 (2)添加地区访问用户量视图,数据集合选择为地区访问用户量,图标类型为明星表。效果如图1-42所示: 图1-42 添加地区访问用户量视图 将area、sid_total、sessionid_total、ip_total拖拽到数据列。修改字段显示名称分别为地区、按照sid统计量、sessionid统计量、ip_total统计量,最后调整视图的大小和位置,得到如图1-43所示效果图。 图1-43 地区访问用户量视图效果图 (3)添加会话页面排行榜视图,数据集合选择为会话页面排行榜,图标类型为基础柱状图,from_url、sessionid拖拽到指标,结果展示前6条。效果如图1-44所示。 图1-44 会话页面排行榜视图 (4)添加渠道访问用户统计视图,数据集合选择为渠道访问用户量,图标类型为基础柱状图,origin_channel、ip_total拖拽到指标,结果展示前6条,显示图例和标签的维度。效果如图1-45所示。 图1-45 渠道访问用户统计视图 (5)从其他中拖拽一个文字组件作为标题,标题内容为教育大数据分析平台,效果如图1-46所示。 图1-46 添加标题 (6)点击仪表板样式,选择仪表板主题为:智慧数据。得到效果图如图1-47所示: 图1-47 教育大数据分析平台大屏效果图 教学思考:这部分技术比较难理解,不要求学生能够掌握,主要是掌握开发的流程,有个宏观的影响,当然能学会是最好的 是否应为“本地文文件”,请作者加以核实。 (11)重启电脑, 开始使用 . 收获慢慢……