《Hadoop 3大数据部署与数据分析实战》-电子教案_第1页
《Hadoop 3大数据部署与数据分析实战》-电子教案_第2页
《Hadoop 3大数据部署与数据分析实战》-电子教案_第3页
《Hadoop 3大数据部署与数据分析实战》-电子教案_第4页
《Hadoop 3大数据部署与数据分析实战》-电子教案_第5页
已阅读5页,还剩236页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

23-教案2024~2025学年第二学期学院(部、中心)计算机工程学院课程名称Hadoop集群部署与开发课程编号2205095104专业、年级、班级2022级物联网工程1-3班主讲教师黄志毅职称高级工程师教务处制教案编写说明教案又称课时授课计划,是任课教师的教学实施方案。任课教师应根据专业的培养方案,紧扣教学大纲,认真分析教学内容,切合学生实际,提前编写设计好每门课程每个章、节或主题的全部教学活动。教案编写说明如下:1、编号:按施教的顺序标明序号(每堂课一个序号)。2、教学时数:指完成一个授课题目所用教学时间。理论课通常以学时数为单位(一般2学时),而实践课则以学时数,天数或周数为单位。3、教学课型表示所授课程的类型,请在理论课、实验课、习题课、实践课及其它栏内选择打“√”。4、题目:标明章、节或主题。5、教学目的要求。6、教学重点、难点。5、教学方式和手段。6、教学过程(含复习旧课、引入新课、组织教学、启发思维、融入思政点等)。将授课的内容按逻辑层次,有序设计编排。本部分不同专业的授课可有自己的特色。7、讨论、思考题和作业。8、参考资料:列出参考书籍、有关资料。9、日期的填写指本堂课授课的时间。授课教案应根据专业技术领域发展、教学要求变化、学生实际水平,以及教师以往教学的课后小结、批注等进行补充、修改或重写,以保持教学内容的先进性和适用性。请妥善保存各阶段的教案,并配合好学校的教学检查和归档等工作。

课前准备一、课程简介《Hadoop集群部署与开发》课程是大数据技术的一门基础课程,也是学习大数据技术第一门基础的理论和实验结合的重要课程。本课程的任务是学习大数据处理技术Hadoop以及Hadoop家族体系的其它核心成员,包含Zookeeper、HBase、Hive、Flume、Sqoop等内容。该课程综合性和实践性强,内容涉及广泛,讲解深入透彻,对毕业后从事大数据相关岗位的同学有重要意义。本课程内容包括Hadoop技术的基本概念、Hadoop完全分布式环境搭建,HDFS管理和访问、MapReduce流程分析及实战编程开发、Hive数据分析、Zookeeper分布式协调服务、HBase存储结构和原理和搭建、Sqoop数据迁移和使用Flume进行数据采集等。本课程的先修课程主要有:《JAVA程序设计》、《数据库原理》、《Linux操作系统》等。二、教材分析在这本教材的编写中,我们在内容上贯穿以“学习者”为中心的设计理念—教学目标以任务驱动,教材内容以“学”和“导学”交织呈现,项目引入以情景化的职业元素构成,学习足迹借助图谱得以可视化,学习效果通过最终的创新项目得以校验,具体如下。1教材内容的组织强调以学习行为为主线,构建了“学”与“导学”的内容逻辑。“学”是主体内容,包括项目描述,任务解决及项目总结:“导学”是引导学生自主学习、独立实践的部分,包括项目引人、交互窗口、思考练习、拓展训练及双创项目。2.情景化、情景剧式的项目引入。模拟一个完整的项目团队,采用情景剧作为项目开篇,并融入职业元素,让内容更加接近于行业、企业和生产实际。项目引入更多则是还原工作场景,展示项目进程,嵌入岗位、行业认知,融入工作的方法和技巧,传递一种解决问题的思路和理念。3.项目篇以项目为核心载体,强调知识输入,首先经过任务的解决与训练,然后再到技能输出;同时采用“两点(知识点、技能点)”“两图(知识图谱、技能图谱)”的方式梳理知识、技能。项目开篇清晰地描绘出该项目所覆盖的知识点,并在项目最后总结出经过任务训练所能获得的技能图谱。4,强调动手和实操,以解决任务为驱动,做中学,学中做。任务驱动式的学习,可以让我们遵循一般的学习规律,由简到难,循环往复,融会贯通;加强实践、动手训练,让学生在实操中学习更加直观和深刻;融入最新的技术应用,结合真实应用场景,解决现实性客户需求。三、学生情况分析本门课程先导学习课程包括《数据结构》、《Java程序设计》、《Linux操作系统》、《数据库原理和应用》。学生需要更好地掌握这几门课程的基础知识,才能更好地开展这门课程的教学,在开课之初可以测试学生对这两门课的掌握程度,可以适当进行知识点的回顾。

Hadoop集群部署与开发课程教案编号:01课时安排:2学时教学课型:理论课√实验课□习题课□实践课□其它□题目(教学章、节或主题):一、搭建Hadoop开发环境教学目的要求(分掌握、熟悉、了解三个层次):了解Hadoop的特性了解Hadoop的发展历史和发展现状教学重点、难点:重点:Hadoop的特性难点:Hadoop的特性教学方式和手段:教学方式:讲授、演示、讨论、案例分析教学手段:多媒体演示、多媒体网络技术教学过程:(含复习上节内容、引入新课、中间组织教学以及如何启发思维、融入思政点等)1.大数据技术什么是大数据技术提问:多大的数据算是大数据案例:通过淘宝双11的数据量与学生个人电脑数据量进行对比,让学生能够比较形象的理解。大数据的特征Volume-大量化Variety–多样化Velocity-快速化Value–价值密度低2.大数据的应用电子商务案例——淘宝视频网站案例——爱奇艺体育领域案例——数字化分析和体育人才发掘思政融入点:国内大数据行业的迅速发展,产生大量的机会,引导学生投身国内大数据行业,为国家科技振兴做出贡献。小结:抛出问题,引导学生思考给你3台1T硬盘的电脑,怎么从一个2T大小的日志文件里面统计访问最多的用户?教学过程(续):板书设计:

1.大数据技术

4V

Volume-大量化

Variety–多样化

Velocity-快速化

Value–价值密度低

2.大数据的应用

3.如何存储?如何计算?

讨论、思考题、作业:实验1实验报告;完成课后练习和课前预习;参考资料:[1]罗文浪,邱波,郭炳字,姜善永.Hadoop大数据平台集群部署与开发[M].北京:人民邮电出版社,2018.[2][美]汤姆,怀特(TomWhite).Hadoop权威指南:大数据的存储与分析[M].北京:清华大学出版社,2017.后记:1.学生普遍对于大数据有初步认识,但是对于大数据的特征认识不够全面。

2.大数据的应用学生只能观察到表面,背后的数据分析关联的应用学生较难体会到,需要举例讲解。

备注:电子版的字体为宋体小四号行距20。日期:2025年2月24日

Hadoop集群部署与开发课程教案编号:02课时安排:2学时教学课型:理论课□实验课√习题课□实践课□其它□题目(教学章、节或主题):P1-部署Hadoop完全分布式与搭建开发环境教学目的要求(分掌握、熟悉、了解三个层次):掌握搭建Hadoop完全分布模式环境熟练掌握Linux常用命令如vi、ping、cat、ssh等掌握VirtualBox、FinalShell等客户端的使用掌握JDK的安装和环境变量的设置掌握IDEA的安装和使用掌握Maven的安装、配置和使用命令教学重点、难点:重点:掌握搭建Hadoop完全分布模式环境难点:掌握搭建Hadoop完全分布模式环境教学方式和手段:教学方式:讲授、演示、实验、讨论教学手段:多媒体演示、多媒体网络技术教学过程:(含复习上节内容、引入新课、中间组织教学以及如何启发思维、融入思政点等)任务1.1部署Hadoop完全分布式【任务目的】掌握搭建Hadoop完全分布模式环境。熟练掌握Linux常用命令如vi、ping、cat、ssh等。掌握VirtualBox、FinalShell等客户端的使用。【任务环境】内存:至少4G硬盘:至少空余40G操作系统:64位Windows系统。【任务资源】FinalShellCentOS7.9系统镜像VirtualBox7Hadoop3安装包【任务要求】(1)完成模板机的克隆(2)完成Hadoop完全分布模式的部署【任务说明】(1)由于部署Hadoop完全分布式需要3个节点,我们使用虚拟化技术,在本地虚拟化出3台虚拟机来部署Hadoop完全分布式环境。(2)对于Hadoop平台的编程调用,需要准备好Java的标准开发环境。我们使用Java开发常见的JDK+Maven+IDEA组合来进行部署和配置。【任务步骤】安装VirtualBox安装VirtualBox,过程略。如果之前有安装旧版本的VirtualBox,请先卸载。导入模板机解压虚拟机压缩包HadoopTmpl.zip到本地目录路径,例如D:\VirtualBoxImages。注意这个路径不能含有中文或者空格。解压以后可以看到以下文件。打开VirtualBox,并导入前面解压的“HadoopTmpl”虚拟机,由于接下来我们要从这台虚拟机复制出3台新的虚拟机,所以我们称这台机为“模板机”。导入成功以后可以在VirtualBox左侧看到HadoopTmpl虚拟机。配置模板机打开VirtualBox的网络管理器进行配置。选中VirtualBoxHost-OnlyEthernetAdapter,这是虚拟机的仅主机(Host-Only)虚拟网络适配器。修改以下的参数:IPv4地址:IPv4网络掩码:设置HadoopTmpl虚拟机的网络适配器,指向刚才配置的VirtualBoxHost-OnlyEthernetAdapter。插入安装镜像光盘CentOS-7-x86_64-DVD-2009.iso,作为本地软件源。测试模板机启动模板机,正常启动以后会出现以下界面。安装FinalShell,过程略。使用FinalShell连接模板机,连接配置如下:连接名称:hadoop@0主机:0端口:22用户名:hadoop密码:132456HadoopTmpl模板机有2个用户,通常只需要使用hadoop用户登录系统即可。#hadoop用户用户名:hadoop密码:132456#root用户用户名:root密码:132456复制模板机登录模板机以后,修改hosts文件。sudovim/etc/hosts在文件后面新增以下几行。这里主要是为了后面复制出来的虚拟机可以相互通过主机名进行相互访问。1nodea替换为你学号后3位2nodeb替换为你学号后3位3nodec替换为你学号后3位关闭HadoopTmpl模板机。依次从模板机复制出3台虚拟机,名称,主机名和IP地址如下表所示,注意替换为你的学号后3位。<ahref="../hadoop-faq/#2-virtualbox-如何复制克隆虚拟机"target="_blank">复制虚拟机的方法请点击此链接查看</a><divclass="tbl-start"></div>虚拟机名称主机名(hostname)IP地址NodeAnodea+你学号后3位(例如nodea101)1NodeBnodeb+你学号后3位(例如nodeb101)2NodeCnodec+你学号后3位(例如nodec101)3<divclass="tbl-end"style="height:10px"></div>由于刚复制好的虚拟机都使用同一个IP地址,所以不能同时启动模板机、NodeA、NodeB或NodeC。需要依次启动,登录,并逐一修改为对应的hostname和IP。<ahref="../hadoop-faq/#4-如何修改centos-7主机名"target="_blank">修改主机名的方法请点击此链接查看</a><ahref="../hadoop-faq/#3-virtualbox-修改虚拟网卡的ip等信息"target="_blank">修改IP地址的方法请点击此链接查看</a>同时启动NodeA、NodeB和NodeC3台虚拟机,配置FinalShell分别连接3台虚拟机,使用hadoop用户登录,密码为123456,测试是否能够正常登录。配置免密登录免密登录,顾名思义就是不需要输入密码即可登录。免密登录的大致原理,就是在客户端client生成一对密钥(包括公钥和私钥),然后将公钥传到服务器。当客户端通过ssh登录服务器时,不用再输入密码就能直接登进去,这就是ssh免密登录。Hadoop的NameNode是通过SSH来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用免密登录。<divclass="warning">注意此阶段命令如无特殊说明,均在NodeA的hadoop用户下执行!</div>保证NodeA、NodeB和NodeC3台虚拟机都处于启动状态。使用hadoop用户登录NodeA节点。如果使用root登录的可以使用以下命令切换到hadoop用户。suhadoop使用ping命令检查是否能够连通NodeB和NodeC。pingnodeb+你学号后3位-c3pingnodec+你学号后3位-c3正常情况下应该有类似返回信息如下:64bytesfromnodeb(2):icmp_seq=1ttl=64time=0.373ms如果没有看到以上返回消息,请检查/etc/hosts是否修改正确,参考Part1步骤14。配置免密登录。首先生成密钥对,运行以下命令。直接回车(Enter)3次。ssh-keygen-trsa在返回的对话文字中,直接回车(Enter)3次,输出内容类似以下。Generatingpublic/privatersakeypair.Enterfileinwhichtosavethekey(/home/hadoop/.ssh/id_rsa):Createddirectory'/home/hadoop/.ssh'.Enterpassphrase(emptyfornopassphrase):Entersamepassphraseagain:Youridentificationhasbeensavedin/home/hadoop/.ssh/id_rsa.Yourpublickeyhasbeensavedin/home/hadoop/.ssh/id_rsa.pub.Thekeyfingerprintis:SHA256:MSUbr5VaCY4KSpsCM0l8uhYWkr5R9iNI05SFuF00jLAhadoop@nodea999Thekey'srandomartimageis:+[RSA2048]+|.+=.B++.||+B.Oo.oBo||OE%o.=*||o%o++B||+o=o.S||.+||.|||||+[SHA256]+查看目录下是否有公钥id_rsa.pub和私钥id_rsa。cd~/.sshls可以看到以下2个文件。其中id_rsa是私钥,id_rsa.pub是公钥。id_rsaid_rsa.pub执行以下命令,把公钥写入本机授权文件。catid_rsa.pub>>authorized_keys查看授权文件内的公钥内容。cd~/.sshcatauthorized_keys可以看到类似以下内容ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQC1Df9cM8NVGURMj3I86EoiO4Jy6LuuHOc+MC3vnZPJX9ISSXDZ9Qx+a5CCdoZJyySG3IlvAFBLv2Wnv60tDZ9xHEQ0WbkAV/IeDrdRk1OI51/bEGfdPqTLBtic1eXsFC6luc7kbQYuxQRoeovl2UwHNgzAX/xTyUV0uAuvTeggyGWq05I9OiantybrumNUJO8gFO3R9CA/zvNrJbuvVDKT9AAqQpn57jDsHkTiAlGoubKUcgAWy1EbYk7hVCL1gFkMcxDMvSOBoY23oqEFSNrkuho2Cj2fNUinaDNDPPzoqbDwvU9IUCGhgfiNYb4Ub/hoabJRjlcNiEgoD+G79lNdhadoop@nodea你的学号后3位修改authorized_keys的权限为444,让NodeA能够免密登录自身。chmod444authorized_keysls-alauthorized_keys 确认NodeB和NodeC2个节点都已经启动。在NodaA上面运行以下命令,把公钥拷贝到NodeB和NodeC。ssh-copy-id-i~/.ssh/id_rsa.pubnodeb+你学号后3位-fssh-copy-id-i~/.ssh/id_rsa.pubnodec+你学号后3位-f系统询问是否连接,输入yesAreyousureyouwanttocontinueconnecting(yes/no)?yes输入hadoop登录密码hadoop@nodeb你学号后3位'spassword:使用以下方法测试免密登录是否配置成功,在NodeA上面分别SSH登录NodeA、NodeB、NodeC。例如:在NodeA执行以下命令,使用SSH协议登录NodeB。sshhadoop@nodeb+你的学号后3位如果能够成功登录NodeB节点,而且不需要输入密码,则表示免密登录成功。输入以下命令退出登录。exit修改Hadoop配置文件<divclass="warning">注意此阶段命令如无特殊说明,均在NodeA的hadoop用户下执行!</div>备份和编辑Hadoop的core-site.xml配置文件。在configuration标签内添加配置,注意替换为你的学号后3位。cp/opt/hadoop/etc/hadoop/core-site.xml{,.bak}vim/opt/hadoop/etc/hadoop/core-site.xml<configuration><!--HDFS访问地址--><property><name>fs.defaultFS</name><value>hdfs://nodea+你学号后3位:8020</value></property><property><name>hadoop.tmp.dir</name><value>/opt/hadoop/tmp</value></property><property><name>erval</name><value>1440</value></property><property><name>hadoop.http.staticuser.user</name><value>hadoop</value></property></configuration>备份和编辑Hadoop的hdfs-site.xml配置文件。请注意替换为你的学号。cp/opt/hadoop/etc/hadoop/hdfs-site.xml{,.bak}vim/opt/hadoop/etc/hadoop/hdfs-site.xml<configuration><!--secondarynamenode访问地址--><property><name>dfs.secondary.http.address</name><value>nodea+你学号后3位:50090</value></property><!--HDFS副本数量--><property><name>dfs.replication</name><value>2</value></property></configuration>新建一个masters配置文件,写入SecondaryNameNode的主机名。vim/opt/hadoop/etc/hadoop/masters删除原有内容,写入以下内容,注意替换为你的学号后3位。nodea+你的学号后3位备份和编辑Hadoop的mapred-site.xml配置文件。注意替换为你的学号后3位。cp/opt/hadoop/etc/hadoop/mapred-site.xml{,.bak}vim/opt/hadoop/etc/hadoop/mapred-site.xml<configuration><property><name></name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>nodea+你学号后3位:10020</value><description>HostandportforJobHistoryServer(default:10020)</description></property><property><name>mapreduce.application.classpath</name><value>$HADOOP_HOME/share/hadoop/mapreduce/*,$HADOOP_HOME/share/hadoop/mapreduce/lib/*,$HADOOP_HOME/share/hadoop/common/*,$HADOOP_HOME/share/hadoop/common/lib/*,$HADOOP_HOME/share/hadoop/yarn/*,$HADOOP_HOME/share/hadoop/yarn/lib/*,$HADOOP_HOME/share/hadoop/hdfs/*,$HADOOP_HOME/share/hadoop/hdfs/lib/*</value></property></configuration>备份和编辑Hadoop的yarn-site.xml配置文件。注意替换为你的学号后3位。cp/opt/hadoop/etc/hadoop/yarn-site.xml{,.bak}vim/opt/hadoop/etc/hadoop/yarn-site.xml<configuration><property><name>yarn.resourcemanager.hostname</name><value>nodea+你学号后3位</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>编辑workers,清除原来的所有内容,增加配置DataNode节点信息。注意替换为你的学号后3位。vim/opt/hadoop/etc/hadoop/workers删除原有内容,写入以下内容。nodeb+你学号后3位nodec+你学号后3位从Hadoop3.0开始,slaves已经启用,改用workers来进行替代配置数据节点信息。修改hadoop-env.sh,在第1行加入以下代码。vim/opt/hadoop/etc/hadoop/hadoop-env.shexportJAVA_HOME=/opt/jdk8把NodeA节点的Hadoop/opt/hadoop/etc/hadoop下所有配置文件发送到NodeB和NodeC。如果上面的配置文件有修改,也需要同步发送到NodeB和NodeC节点。cd/opt/hadoop/etc/scp-rhadoophadoop@nodeb+你学号后3位:/opt/hadoop/etc/scp-rhadoophadoop@nodec+你学号后3位:/opt/hadoop/etc/格式化HDFS。<divclass="warning">注意此命令请勿重复执行,因为会导致DataNode和NameNode的集群ID不一致,造成HDFS出错。</div>hdfsnamenode-format在输出的内容中,如果能看到以下这句信息,说明格式化成功。2022-01-2414:32:54,209INFOcommon.Storage:Storagedirectory/opt/hadoop/tmp/dfs/namehasbeensuccessfullyformatted.创建Hadoop启动脚本,注意替换为你的学号后3位。vim/opt/hadoop/sbin/start-hdp.sh#!/usr/bin/envbashecho"StartHadoopby你的学号后3位"start-dfs.shstart-yarn.shmapred--daemonstarthistoryserver创建Hadoop停止脚本,注意替换为你的学号后3位。vim/opt/hadoop/sbin/stop-hdp.sh#!/usr/bin/envbashecho"StopHadoopby你的学号后3位"mapred--daemonstophistoryserverstop-yarn.shstop-dfs.sh创建Hadoop重启脚本,注意替换为你的学号后3位。vim/opt/hadoop/sbin/restart-hdp.sh#!/usr/bin/envbashstop-hdp.shstart-hdp.sh修改创建的脚本的权限。cd/opt/hadoop/sbin/chmod744start-hdp.shstop-hdp.shrestart-hdp.sh使用脚本启动Hadoop。start-hdp.sh验证免密登录在NodeB和NodeC2个节点分别执行以下命令,查看是否包含来自NodeA的公钥。cd~/.sshcatauthorized_keys验证时间是否同步在NodeB和NodeC2个节点分别执行以下命令,查看时间是否与NodeA同步。date如果时间不同步,可以执行以下语句,尝试强制同步时间。chronyc-amakestep验证Hadoop是否正常启动在NodeA输入jps命令,观察是否有以下进程。jps正常应该有类似以下信息返回:NameNodeJpsResourceManagerSecondaryNameNodeJobHistoryServer在NodeA输入以下命令查看机架拓扑是否有NodeB和NodeC的信息hdfsdfsadmin-printTopology正常应该有类似以下信息返回:Rack:/default-rack2:9866(nodeb你的学号后3位)3:9866(nodec你的学号后3位)在NodeB和NodeC分别输入jps命令,观察是否有以下进程。jps正常应该有类似以下信息返回:DataNodeNodeManagerJps验证HDFS是否正常工作打开宿主机浏览器,访问HDFSWeb界面<ahref="1:9870/"target="_blank">1:9870/</a>查看NameNode是否Active查看2个节点DataNode服务状态是否正常。上传countryroad.txt到NodeA的/home/hadoop把countryroad.txt从CentOS文件系统上传到HDFS文件系统。hdfsdfs-mkdir/part2hdfsdfs-put/home/hadoop/countryroad.txt/part2hdfsdfs-ls/part2验证MapReduce是否正常工作运行Hadoop自带的Wordcount程序,观察输出的内容。cd$HADOOP_HOME/share/hadoop/mapreducehadoopjarhadoop-mapreduce-examples-3.3.1.jarwordcount/part2/countryroad.txt/output如果输出的日志内容包含类似以下信息,则表示执行成功2022-01-2415:48:51,712INFOmapreduce.Job:Jobjob_xxxxxxxcompletedsuccessfully程序执行过程中,可以访问YarnWeb界面查看任务进展。<ahref="1:8088/cluster/apps"target="_blank">1:8088/cluster/apps</a>等待程序运行完毕,观察输出的内容hdfsdfs-cat/output/part-r-00000任务1.2搭建Hadoop开发环境【任务目的】掌握JDK的安装和环境变量的设置掌握IDEA的安装和使用掌握Maven的安装、配置和使用命令【任务环境】Windows7以上64位操作系统【任务资源】<ahref="/java/technologies/javase-downloads.html"target="_blank">JDK8</a>-JavaDevelopmentKit是Oracle公司针对Java开发人员发布的免费软件开发工具包,是Java开发必备的开发工具。<ahref="/idea/"target="_blank">IntellijIDEA</a>-业界简称IDEA,是jetbrains公司推出的和Eclipse齐名的Java集成开发环境(IDE)。<ahref="/"target="_blank">ApacheMaven</a>-ApacheMaven,是一个软件项目管理及自动构建工具,由Apache软件基金会所提供。是Java构建打包最广泛使用的工具。【任务说明】为了能够使用编程的方式访问和调用Hadoop平台的功能,我们必须部署一套基于Java的编程环境。本次任务主要是完成JDK、Maven和IDEA的安装和配置。【任务内容】完成JDK、IDEA和Maven的安装与配置编写测试用例测试之前的软件安装是否成功【任务步骤】安装JDK8在Windows运行安装jdk-8u261-windows-x64.exe,安装过程略。此处以安装到d:\jdk8为例。安装完结束以后目录架构如下:目录架构如下:d:\jdk8|-bin/|-lib/|-include/|-jre/|-legal/|-javafx-src.zip|-jmc.txt|-src.zip|-COPYRIGHT|-release|-LICENSE|-README.html进入Windows的环境变量配置界面,配置以下环境变量。如果系统C盘会还原,每次重启电脑都需要配置此环境变量。注意修改JDK的安装目录为你实际安装目录。#新增JAVA_HOME=D:\jdk8CLASSPATH=%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar#修改PATH,在PATH环境变量原有值后面追加;%JAVA_HOME%\bin;打开Windows的命令行终端,运行以下命令,测试是否有JDK的版本输出。java-version正常情况会有类似以下内容输出javaversion"1.8.0_271"Java(TM)SERuntimeEnvironment(build1.8.0_271-b09)JavaHotSpot(TM)64-BitServerVM(build25.271-b09,mixedmode)安装IDEA运行ideaIC-2021.2.1.exe,指定目录安装IDEA,这里以d:\idea为例。安装完成以后目录架构如下:d:\idea\ideaIC-2021.2.1.win|-bin\|-build.txt|-jbr\|-lib\|-license|-LICENSE.txt|-NOTICE.txt|-plugins\|-product-info.json|-redist\编辑d:\idea\ideaIC-2021.2.1.win\bin目录下的idea.exe.vmoptions和idea64.exe.vmoptions,在文件末尾加上以下代码,让IDEA默认使用UTF8编码。-Dfile.encoding=UTF-8安装和配置Maven3解压apache-maven-3.6.3-bin.zip,这里以解压到d:\maven363为例。在Maven安装目录下创建一个repos目录,解压repos.zip到repos目录下,里面包含hadoop开发包的仓库(Repository)。d:\maven363|-bin/|-boot/|-conf/|-lib/|-LICENSE|-NOTICE|-README.txt|-repos/编辑d:\maven363\conf\settings.xml文件。在<settings>标签内新增本地仓库路径设置。<localRepository>标签内内容注意修改为你的Maven的实际安装路径。<localRepository>D:/maven363/repos</localRepository>注意:这个XML的标签,需要放在XML的注释<!---->外,放在注释内的内容是无法生效的。编辑d:\maven363\conf\settings.xml文件。在约148行<mirrors>标签内增加远程仓库镜像地址。开发过程中依赖的Jar包可以通过配置从此地址下载。如果电脑可以联网,可以修改指向阿里云的仓库镜像。<mirror><id>nexus-aliyun</id><mirrorOf>*</mirrorOf><name>Nexusaliyun</name><url>/nexus/content/groups/public</url></mirror>注意:这个XML的标签,需要放在XML的注释<!---->外,放在注释内的内容是无法生效的。进入Windows的环境变量配置界面,配置以下环境变量。可参考步骤2#新增MAVEN_HOME=D:\maven363#修改PATH,在PATH环境变量原有值后面追加;%MAVEN_HOME%\bin;以下截图仅供参考,请根据你自己的Maven路径设置。打开Windows的命令行终端,运行以下命令,测试是否能够输出你的mvn脚本所在路径。wheremvn正常会输出你的mvn路径,以下截图仅供参考。打开Windows的命令行终端,运行以下命令,测试是否有Maven的版本输出。mvn-version安装和配置IDEA启动IDEA,运行d:\idea\ideaIC-2021.2.1.win\bin\idea.exe。新建一个项目。新建一个Maven项目,ProjectSDK选择1.8,如果没有,则点击AddJDK...,指向你的JDK的安装目录。新建一个开发项目,命名为hadoopexp+你学号后3位。创建成功以后,可以看到项目的整体目录架构。修改IDEA的Maven配置,指向本地安装的Maven。这里注意替换为你的Maven的实际安装目录。修改项目下的pom.xml文件,此文件是Maven项目的配置文件。<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>hadoop</groupId><artifactId>hadoop-exp</artifactId><version>1.0</version><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><piler.encoding>UTF-8</piler.encoding><piler.source>8</piler.source><piler.target>8</piler.target><hadoop.version>3.3.1</hadoop.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>1.3.1</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-server</artifactId><version>1.3.1</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-server</artifactId><version>1.3.1</version></dependency><dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>3.9.0</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><configuration><archive><!--<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>--><manifest><!--main()所在的类,注意修改为你的Main主类--><mainClass>hadoop.mapreduce.wc.WordCountMain</mainClass></manifest></archive></configuration></plugin></plugins></build></project>在项目hadoop-exp\src\main\java下创建一个名为hadoop+你学号后3位的包。注意替换为你学号后3位。在你创建的包下面,再创建一个名为Hello的类(class)。在Hello这个类中,编写一个main方法,打印出以下内容。记录你编写的代码,注意替换为你学号后3位。Hellofrom你学号后3位JUnit是Java开发中最常用的单元测试框架,可以帮助测试我们编写的代码。JUnit非常容易上手。我们可以新建一个JUnit测试类学习使用它。在项目hadoop-exp\src\test\java下创建一个名为hadoop+你学号后3位的包。注意替换为你学号后3位。在你刚创建的包下面创建一个名为HelloJUnit的类。编辑HelloJUnit类,输入下面的代码,运行查看测试结果。注意替换为你学号后3位。packagehadoop+你学号后3位;importorg.junit.Test;importstaticorg.junit.Assert.*;publicclassHelloJUnit{ @Testpublicvoidtest1(){ //assertEquals第1个参数时期待值,第2个参数是我们需要测试的值assertEquals(2,1+1); assertNotEquals("帅哥","帅锅");assertFalse(3==(1+1));//断定参数是FalseassertTrue(2==(1+1));//断定参数是True//字符串的split方法是根据第一个参数字符来把字符串分切为一个字符串数组String[]strArr="唱,跳,RAP,篮球".split(",");assertEquals("唱",strArr[0]);assertEquals("跳",strArr[1]); assertEquals("RAP",strArr[2]); assertEquals("篮球",strArr[3]);}}如果结果显示是绿色的勾,则表示单元测试成功。如果是交叉,则表示测试失败。修改以上HelloJUnit类,重新运行,让测试成功。并记录你修改的代码。编写一个test2方法,测试以下2个字符串是否相等。字符串1:1ll1ll1l11ll1l字符串2:1ll1ll1ll1ll1l【常见问题】1.NodeA节点NameNode或SecondaryNameNode无法启动。并且日志提示“/opt/hadoop/tmp/dfs/namesecondaryisinaninconsistentstate”。答:可能是因为多次格式化或者配置文件没有同步导致的错误。(1)首先把NodeA节点的Hadoop/opt/hadoop/etc/hadoop下所有配置文件发送到NodeB和NodeC。cd/opt/hadoop/etc/scp-rhadoophadoop@nodeb+你学号后3位:/opt/hadoop/etc/scp-rhadoophadoop@nodec+你学号后3位:/opt/hadoop/etc/(2)删除/opt/hadoop/tmp下的所有内容。(3)再次执行HDFS格式化。hdfsnamenode-format2.Hadoop执行MapReduce任务失败,并且日志伴有“Note:Systemtimesonmachinesmaybeoutofsync.Checksystemtimeandtimezones.”答:可能是由于虚拟机节点之间的时间不同步导致的。(1)在NodeB和NodeC执行以下语句,尝试强制与NodeA同步时间。chronyc-amakestep(2)重启Hadoop。3.YARN的ResourceManager进程找不到,而且日志报java.lang.NullPointerExceptionjava.lang.NullPointerExceptionattocolrecords.impl.pb.NodesToAttributesMappingRequestPBImpl.initNodeAttributesMapping(NodesToAttributesMappingRequestPBImpl.java:102)attocolrecords.impl.pb.NodesToAttributesMappingRequestPBImpl.getNodesToAttributes(NodesToAttributesMappingRequestPBImpl.java:117)atorg.apache.hadoop.yarn.nodelabels.store.op.FSNodeStoreLogOp.getNodeToAttributesMap(FSNodeStoreLogOp.java:46)atorg.apache.hadoop.yarn.nodelabels.store.op.NodeAttributeMirrorOp.recover(NodeAttributeMirrorOp.java:57)atorg.apache.hadoop.yarn.nodelabels.store.op.NodeAttributeMirrorOp.recover(NodeAttributeMirrorOp.java:35)atorg.apache.hadoop.yarn.nodelabels.store.AbstractFSNodeStore.loadFromMirror(AbstractFSNodeStore.java:121)atorg.apache.hadoop.yarn.nodelabels.store.AbstractFSNodeStore.recoverFromStore(AbstractFSNodeStore.java:150)atorg.apache.hadoop.yarn.server.resourcemanager.nodelabels.FileSystemNodeAttributeStore.recover(FileSystemNodeAttributeStore.java:95)答:在/tmp目录下找到以下yarn相关的目录进行删除/tmp/hadoop-yarn-hadoop/tmp/hadoop-yarn-root教学过程(续):板书设计:

关键点:

(1)FinalShell连接不上,VirtualBox虚拟网络适配器配置

(2)先关闭虚拟机,再关闭电脑

(3)保存快照,避免虚拟机损坏

讨论、思考题、作业:实验1实验报告参考资料:[1]罗文浪,邱波,郭炳字,姜善永.Hadoop大数据平台集群部署与开发[M].北京:人民邮电出版社,2018.[2][美]汤姆,怀特(TomWhite).Hadoop权威指南:大数据的存储与分析[M].北京:清华大学出版社,2017.后记:1.部分学生导入虚拟机容易出错,大多数都是系统的原因,可以考虑重新安装VirtualBox解决。

2.保留VMWare的使用教程,让学生可以多一种选择,避免VirtualBox不兼容导致实验做不了。备注:电子版的字体为宋体小四号行距20。日期:2025年2月24日

Hadoop集群部署与开发课程教案编号:03课时安排:2学时教学课型:理论课√实验课□习题课□实践课□其它□题目(教学章、节或主题):一、搭建Hadoop开发环境教学目的要求(分掌握、熟悉、了解三个层次):了解Hadoop的发展历史和发展现状掌握Hadoop搭建教学重点、难点:重点:掌握Hadoop搭建难点:掌握Hadoop搭建教学方式和手段:教学方式:讲授、演示、讨论、案例分析教学手段:多媒体演示、多媒体网络技术教学过程:(含复习上节内容、引入新课、中间组织教学以及如何启发思维、融入思政点等)回顾小结:抛出问题,引导学生思考给你3台1T硬盘的电脑,怎么从一个2T大小的日志文件里面统计访问最多的用户?3.Hadoop的工作原理Hadoop的诞生过程Hadoop简介是一款使用简单的计算模型,在大型计算机集群上处理大量数据的开源框架。Hadoop是如何处理大数据的?曹聪称象的故事4.谷歌的“三驾马车”谷歌的三篇论文GFSMapReduceBigTable通过融入中国与西方国家在大数据技术方面的竞争背景,激发学生爱国热情,树立科技兴国目标(思政融入点)。5.搭建Hadoop完全分布式环境安装VirtualBox安装VirtualBox,过程略。如果之前有安装旧版本的VirtualBox,请先卸载。导入模板机解压虚拟机压缩包HadoopTmpl.zip到本地目录路径,例如D:\VirtualBoxImages。注意这个路径不能含有中文或者空格。解压以后可以看到以下文件。打开VirtualBox,并导入前面解压的“HadoopTmpl”虚拟机,由于接下来我们要从这台虚拟机复制出3台新的虚拟机,所以我们称这台机为“模板机”。导入成功以后可以在VirtualBox左侧看到HadoopTmpl虚拟机。配置模板机打开VirtualBox的网络管理器进行配置。选中VirtualBoxHost-OnlyEthernetAdapter,这是虚拟机的仅主机(Host-Only)虚拟网络适配器。修改以下的参数:IPv4地址:IPv4网络掩码:设置HadoopTmpl虚拟机的网络适配器,指向刚才配置的VirtualBoxHost-OnlyEthernetAdapter。插入安装镜像光盘CentOS-7-x86_64-DVD-2009.iso,作为本地软件源。测试模板机启动模板机,正常启动以后会出现以下界面。安装FinalShell,过程略。使用FinalShell连接模板机,连接配置如下:连接名称:hadoop@0主机:0端口:22用户名:hadoop密码:132456HadoopTmpl模板机有2个用户,通常只需要使用hadoop用户登录系统即可。#hadoop用户用户名:hadoop密码:132456#root用户用户名:root密码:132456复制模板机登录模板机以后,修改hosts文件。sudovim/etc/hosts在文件后面新增以下几行。这里主要是为了后面复制出来的虚拟机可以相互通过主机名进行相互访问。1nodea替换为你学号后3位2nodeb替换为你学号后3位3nodec替换为你学号后3位关闭HadoopTmpl模板机。依次从模板机复制出3台虚拟机,名称,主机名和IP地址如下表所示,注意替换为你的学号后3位。由于刚复制好的虚拟机都使用同一个IP地址,所以不能同时启动模板机、NodeA、NodeB或NodeC。需要依次启动,登录,并逐一修改为对应的hostname和IP。同时启动NodeA、NodeB和NodeC3台虚拟机,配置FinalShell分别连接3台虚拟机,使用hadoop用户登录,密码为123456,测试是否能够正常登录。教学过程(续):板书设计:

1.Hadoop的工作原理

2.谷歌的“三驾马车”

GFS

MapReduce

BigTable

3.完全分布式环境搭建过程

安装VirtualBox

导入模板机

配置模板机

测试模板机

复制模板机

讨论、思考题、作业:实验1实验报告;完成课后练习和课前预习;参考资料:[1]罗文浪,邱波,郭炳字,姜善永.Hadoop大数据平台集群部署与开发[M].北京:人民邮电出版社,2018.[2][美]汤姆,怀特(TomWhite).Hadoop权威指南:大数据的存储与分析[M].北京:清华大学出版社,2017.后记:1.本小结难点在于让学生理解大数据的存储模式,包括元数据的概念和文件系统的工作原理。需要在板书和PPT上画图加上动画演示可能会更为生动一些。

2.不分学生对于虚拟机的安装和配置还是不太熟悉,需要重复讲解,让学生回顾相关知识点。备注:电子版的字体为宋体小四号行距20。日期:2025年2月26日

Hadoop集群部署与开发课程教案编号:04课时安排:2学时教学课型:理论课√实验课□习题课□实践课□其它□题目(教学章、节或主题):一、搭建Hadoop开发环境教学目的要求(分掌握、熟悉、了解三个层次):掌握Hadoop搭建教学重点、难点:重点:掌握Hadoop搭建难点:掌握Hadoop搭建教学方式和手段:教学方式:讲授、演示、讨论、案例分析教学手段:多媒体演示、多媒体网络技术教学过程:(含复习上节内容、引入新课、中间组织教学以及如何启发思维、融入思政点等)5.搭建Hadoop完全分布式环境配置免密登录免密登录,顾名思义就是不需要输入密码即可登录。免密登录的大致原理,就是在客户端client生成一对密钥(包括公钥和私钥),然后将公钥传到服务器。当客户端通过ssh登录服务器时,不用再输入密码就能直接登进去,这就是ssh免密登录。Hadoop的NameNode是通过SSH来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用免密登录。<divclass="warning">注意此阶段命令如无特殊说明,均在NodeA的hadoop用户下执行!</div>保证NodeA、NodeB和NodeC3台虚拟机都处于启动状态。使用hadoop用户登录NodeA节点。如果使用root登录的可以使用以下命令切换到hadoop用户。suhadoop使用ping命令检查是否能够连通NodeB和NodeC。pingnodeb+你学号后3位-c3pingnodec+你学号后3位-c3正常情况下应该有类似返回信息如下:64bytesfromnodeb(2):icmp_seq=1ttl=64time=0.373ms如果没有看到以上返回消息,请检查/etc/hosts是否修改正确,参考Part1步骤14。配置免密登录。首先生成密钥对,运行以下命令。直接回车(Enter)3次。ssh-keygen-trsa在返回的对话文字中,直接回车(Enter)3次,输出内容类似以下。Generatingpublic/privatersakeypair.Enterfileinwhichtosavethekey(/home/hadoop/.ssh/id_rsa):Createddirectory'/home/hadoop/.ssh'.Enterpassphrase(emptyfornopassphrase):Entersamepassphraseagain:Youridentificationhasbeensavedin/home/hadoop/.ssh/id_rsa.Yourpublickeyhasbeensavedin/home/hadoop/.ssh/id_rsa.pub.Thekeyfingerprintis:SHA256:MSUbr5VaCY4KSpsCM0l8uhYWkr5R9iNI05SFuF00jLAhadoop@nodea999Thekey'srandomartimageis:+[RSA2048]+|.+=.B++.||+B.Oo.oBo||OE%o.=*||o%o++B||+o=o.S||.+||.|||||+[SHA256]+查看目录下是否有公钥id_rsa.pub和私钥id_rsa。cd~/.sshls可以看到以下2个文件。其中id_rsa是私钥,id_rsa.pub是公钥。id_rsaid_rsa.pub执行以下命令,把公钥写入本机授权文件。catid_rsa.pub>>authorized_keys查看授权文件内的公钥内容。cd~/.sshcatauthorized_keys可以看到类似以下内容ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQC1Df9cM8NVGURMj3I86EoiO4Jy6LuuHOc+MC3vnZPJX9ISSXDZ9Qx+a5CCdoZJyySG3IlvAFBLv2Wnv60tDZ9xHEQ0WbkAV/IeDrdRk1OI51/bEGfdPqTLBtic1eXsFC6luc7kbQYuxQRoeovl2UwHNgzAX/xTyUV0uAuvTeggyGWq05I9OiantybrumNUJO8gFO3R9CA/zvNrJbuvVDKT9AAqQpn57jDsHkTiAlGoubKUcgAWy1EbYk7hVCL1gFkMcxDMvSOBoY23oqEFSNrkuho2Cj2fNUinaDNDPPzoqbDwvU9IUCGhgfiNYb4Ub/hoabJRjlcNiEgoD+G79lNdhadoop@nodea你的学号后3位修改authorized_keys的权限为444,让NodeA能够免密登录自身。chmod444authorized_keysls-alauthorized_keys 确认NodeB和NodeC2个节点都已经启动。在NodaA上面运行以下命令,把公钥拷贝到NodeB和NodeC。ssh-copy-id-i~/.ssh/id_rsa.pubnodeb+你学号后3位-fssh-copy-id-i~/.ssh/id_rsa.pubnodec+你学号后3位-f系统询问是否连接,输入yesAreyousureyouwanttocontinueconnecting(yes/no)?yes输入hadoop登录密码hadoop@nodeb你学号后3位'spassword:使用以下方法测试免密登录是否配置成功,在NodeA上面分别SSH登录NodeA、NodeB、NodeC。例如:在NodeA执行以下命令,使用SSH协议登录NodeB。sshhadoop@nodeb+你的学号后3位如果能够成功登录NodeB节点,而且不需要输入密码,则表示免密登录成功。输入以下命令退出登录。exit修改Hadoop配置文件<divclass="warning">注意此阶段命令如无特殊说明,均在NodeA的hadoop用户下执行!</div>备份和编辑Hadoop的core-site.xml配置文件。在configuration标签内添加配置,注意替换为你的学号后3位。cp/opt/hadoop/etc/hadoop/core-site.xml{,.bak}vim/opt/hadoop/etc/hadoop/core-site.xml<configuration><!--HDFS访问地址--><property><name>fs.defaultFS</name><value>hdfs://nodea+你学号后3位:8020</value></property><property><name>hadoop.tmp.dir</name><value>/opt/hadoop/tmp</value></property><property><name>erval</name><value>1440</value></property><property><name>hadoop.http.staticuser.user</name><value>hadoop</value></property></configuration>备份和编辑Hadoop的hdfs-site.xml配置文件。请注意替换为你的学号。cp/opt/hadoop/etc/hadoop/hdfs-site.xml{,.bak}vim/opt/hadoop/etc/hadoop/hdfs-site.xml<configuration><!--secondarynamenode访问地址--><property><name>dfs.secondary.http.address</name><

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论