书签 分享 收藏 举报 版权申诉 / 58
上传文档赚钱

类型Hadoop大数据平台构建与应用课件项目3就业岗位数据采集和存储.pptx

  • 上传人(卖家):晟晟文业
  • 文档编号:4104894
  • 上传时间:2022-11-11
  • 格式:PPTX
  • 页数:58
  • 大小:2.80MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Hadoop大数据平台构建与应用课件项目3就业岗位数据采集和存储.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Hadoop 数据 平台 构建 应用 课件 项目 就业 岗位 采集 存储
    资源描述:

    1、Hadoop大数据平台构建与应用课件项目3就业岗位数据采集和存储项目3 就业岗位数据采集和存储ABC项目描述任务3.1【知识目标】识记WebMagic的流程架构和HDFS的基础架构以及Hive的基本概念和特点。领会网络爬虫的编程实现的步骤和方法。【技能目标】学会使用WebMagic开发网络爬虫的步骤和方法 学会HDFS服务进程管理。学会HDFS属性配置管理。学会HDFS上传文件的方法。学会Sqoop上传文件至Hive中的方法。知识准备webmagic-scriptswebmagic-seleniumwebmagic-saxonwebmagic-samplesWebMagic项目里还有几个包,这

    2、些项目里还有几个包,这些都是一些实验性的功能,目的只是都是一些实验性的功能,目的只是提供一些与外围工具整合的样例。提供一些与外围工具整合的样例。webmagic-avalon13524WebMagic的是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫。其架构流程如图3-1所示。3-1 WebMagic架构图任务实施(1)解析岗位列表页源代码岗位信息页后续列表分页图3-2 岗位列表页结构这是在WebMagic框架中的PageProcessor组件中定制实现的,首先要做的是设置抓取的基本配置,包括编码、抓取间隔、重试次数,代码如下:private Sit

    3、e site=Site.me().setRetryTimes(3).setSleepTime(10).setCharset(gbk);这里选择重试次数为3次,抓取间隔为10毫秒,编码根据为51job网页源代码可以查看得到,如下所示:【云计算招聘,求职】-前程无忧该招聘网站的编码为gbk。接下来,判断当前分析的页面是否为岗位列表页。不难发现,列表页的URL中都含有字符段,可以通过简单的if语句判断:if(page.getUrl().toString().contains()下面分析岗位信息页链接的HTML源代码,并用Xpath语法解析出,添加至抓取队列。检查某个链接源代码的方法,在岗位列表中右击

    4、一项,在弹出的下拉菜单中选择“Inspect”命令,如图3-3所示。图3-3 选择Inspect命令右击并选择检查(Inspect)后,出现了该链接的HTML源码,如图3-4所示。图3-4 查看HTML源代码可以发现,所需要的URL地址是一个标签下的唯一的超链接,该标签的class名为t1。同理,这个岗位列表页下的所有岗位信息页的URL都有着相同的格式。因此可以使用Xpath全部识别,并添加至抓取队列,代码实现如下:select=page.getHtml().xpath(/pclass=t1);urls=select.links().all();page.addTargetRequests(u

    5、rls);添加后续分页的链接也是如上一样的方法,在此省去分析HTML源码的截图,直接贴上代码:select=page.getHtml().xpath(/divclass=dw_page);urls=select.links().all();这里需要注意的是,要防止添加空白搜索结果页的链接,不然将会把整个51job的岗位全都抓取下来。尽管按照定制的抓取逻辑,这种意外不会出现,但还是添加了踢出队列的保护机制,代码如下:Iterator it=urls.iterator();while(it.hasNext()String x=it.next();if(x.equals(http:/ if(page

    6、.getUrl().toString().startsWith(http:/ page.putField(content,page.getHtml().xpath(/divclass=bmsg job_msg inbox/html().toString();/其他可选项 page.putField(salary,page.getHtml().xpath(/divclass=cn/strong/text().toString();page.putField(location,page.getHtml().xpath(/spanclass=lname/text().toString();page.

    7、putField(company,page.getHtml().xpath(/pclass=cname/a/text().toString();page.putField(experience,page.getHtml().regex(+).toString();page.putField(education,page.getHtml().regex(+).toString();page.putField(number,page.getHtml().regex(+).toString();(3)根据条件保存抓取到的信息这里根据条件筛选岗位信息,比如已经列出了一些培训机构的“公司黑名单”,保存在

    8、了Dictionary类中的Blacklist静态String数组中,那么可以用简单的if语句来判断:Boolean choose=true;/判断是否为培训公司发布的“垃圾”招聘信息for(String i:Dictionary.Blacklist)if(String)resultItems.get(company).contains(i)choose=false;对于发布日期,仅需要保留当天发布的招聘信息,判断代码如下:/判断是否为当天发布的招聘信息if(!(String)resultItems.get(createtime).contains(Today_Date)choose=fals

    9、e;其中Today_Date是一个静态final型字符串:public static final String Today_Date=timeTostrMD(new Date();timeToStrMD是一个自定义获取当天月份和日期并返回诸如“05-05”形式字符串的方法。代码如下:public static String timeTostrMD(Date date)String strDate=;if(date!=null)SimpleDateFormat format=new SimpleDateFormat(MM-dd);strDate=format.format(date);retur

    10、n strDate;在筛选完之后,便可以将抓取内容选择性地保存至本地的某个文件中,这里定制的保存格式为一个岗位保存一行,每行中的信息用制表符t分隔,最后保存在一个以日期命名的文本文件中,代码如下:try/定义存储路径,以每天为一个文件存储String path=this.path+PATH_SEPERATOR+timeTostrYMD(new Date()+.txt;File file=getFile(path);String str=resultItems.get(url)+t+resultItems.get(job)+t+resultItems.get(location)+t+result

    11、Items.get(company)+t+resultItems.get(salary)+t+resultItems.get(experience)+t+resultItems.get(education)+t+resultItems.get(number)+t+resultItems.get(createtime)+t+rn;FileUtils.writeStringToFile(file,str,utf-8,true);catch(IOException e)logger.warn(write file error,e);(4)运行代码程序WebMagic的核心组件为PageProcess

    12、or与Pipeline,通过上述步骤的讲解,读者应该可以定制这两个组件了,而调用这两个核心组件是通过Spider类,简单的代码如下:Spider.create(new CrawlJob().addUrl(URL_START).addPipeline(new PipelineJob().thread(5).run();由于要将Java程序导出为jar文件,并且需要实现无参传递(使用默认保存路径)和有参传递(使用指定保存路径)两种形式,因此使用main方法的代码如下:public static void main(String args)throws Exception String URL_ST

    13、ART=http:/ CrawlJob().addUrl(URL_START).addPipeline(new PipelineJob().thread(5).run();elseSpider.create(new CrawlJob().addUrl(URL_START).addPipeline(new PipelineJob(args0).thread(5).run();任务3.2 采集的数据上传到HDFS任务描述1.借助学习论坛、网络视频等网络资源和各种图书资源,学习HDFS文件系统的使用方法。2.将利用WebMagic爬取工具爬取的招聘岗位信息上传到HDFS文件系统中。任务目标1.熟悉H

    14、DFS工作原理。2.学会文件系统的属性配置方法。3.学会通过多种方式上传文件至HDFS文件系统的方法。知识准备在HDFS体系结构采用Master/Slave的主从架构,如图3-6所示,其中Master节点运行NameNode进程,Slave节点运行DataNode进程。图3-6 HDFS体系结构磁盘有一个Block Size的概念,它是磁盘读/写数据的最小单位。文件系统的块一般为几千字节(byte),磁盘块一般为512字节(byte)。HDFS也有Block的概念,但它的块是一个很大的单元,是文件存储处理的逻辑单元。默认是64 MB。像硬盘中的文件系统一样,在HDFS中的文件将会按块大小进行分

    15、解,并作为独立的单元进行存储。但和硬盘中的文件系统不一样的是,存储在块中的一个比块小的文件并不会占据一个块大小的物理空间(HDFS中一个块只存储一个文件的内容)。HDFS作为一个分布式文件系统,是设计用来处理大文件的,使用抽象的块会带来很多好处。一个好处是可以存储任意大的文件,而又不会受到网络中任一单个节点磁盘大小的限制。另外一个好处是使用抽象块作为操作的单元可简化存储子系统,不仅如此,块更有利于分布式文件系统中复制容错的实现。在HDFS中为了处理节点故障,默认将文件块副本数设定为3份,分别存储在集群的不同节点上。当一个块损坏时,系统会通过NameNode获取元数据信息,在另外的机器上读取一个

    16、副本并进行存储,这个过程对用户来说都是透明的。当然,这里的文件块副本冗余可以通过文件进行配置,在HDFS中,可以通过终端命令直接获得文件和块信息,比如以下命令可以列出文件系统中组成各个文件的块:hadoop fsck/-files-blocks任务实施hadoop-daemon.sh脚本是启动和停止Hadoop后台程序,-config参数指定启动程序时用到的配置文件目录。大括号中的namenode和datenode是需要启动的进程,两者择其一。命令如下:#/usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh-config/usr/hdp/cu

    17、rrent/hadoop-client/conf stop namenode/datenode#/usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh-config/usr/hdp/current/hadoop-client/conf start namenode/datenode(2)HDFS属性配置 core-site.xml设置Hadoop默认文件系统。fs.defaultFS hdfs:/master:8020设置缓存的大小,这个参数要设置为系统页面大小的倍数,以byte为单位。io.file.buffer.size 131072设置H

    18、DFS的NameNode的格式化信息存储路径。hadoop.tmp.dir file:/home/hadoop/tmp Abase for other temporary directories.(2)HDFS属性配置hdfs-site.xml设置本地文件系统DFS NameNode存放Name Ttable的路径。dfs.namenode.name.dir file:/usr/hadoop/dfs/name设置本地文件系统DFS DataNode存放数据Block的目录。dfs.datanode.data.dir file:/usr/hadoop/dfs/data设置HDFS文件系统Bloc

    19、k的复制份数。设置为的3时,HDFS就会按照设置将文件系统块复制为3份。如果采用的是伪分布配置,这里参数应设置为1,否则在单独一个数据节点上运行时,HDFS无法将块复制到3个数据节点上,所以会持续警告块的副本不够。dfs.replication 3(2)HDFS属性配置安全模式NameNode启动后会进入一个称为安全模式的特殊状态。处于安全模式下的文件系统只可读不可写。NameNode从所有的DataNode上接收心跳信号和块状态报告。当在进行系统维护或者集群维护时,不希望用户再去操作HDFS文件系统中的文件,这时候需要手动将NameNode设置成安全模式的状态。该操作需要HDFS管理用户来进

    20、行实现,即hdfs用户。进入安全模式的命令如下:$hadoop dfsadmin-safemode enter$hadoop dfsadmin-safemode get执行结果如下:Safe mode is ON(2)HDFS属性配置文件安全下面简单介绍Hadoop是采用哪种机制来确保NameNode的安全的。第一种是备份NameNode上持久化存储的元数据文件,然后将其转储到其他文件系统中,这种转储是同步的、原子的操作。第二种是系统中同步运行一个Secondary NameNode(二级NameNode)。(2)HDFS属性配置可靠性管理为了保证HDFS文件系统的可靠性,可以采取以下策略:冗

    21、余副本策略。第一种是通过Web界面,进入到HDFS配置中修改Block replication的参数值。如图3-8所示。图3-8 修改Block replication的参数值(2)HDFS属性配置可靠性管理第二种方式是在Shell命令行模式下,修改hdfs-site.xml配置文件,将dfs.replication的值设置为5,然后重启NameNode和DataNode进程。#vi/etc/hadoop/2.3.6.0-3796/0/hdfs-site.xml dfs.replication 5(2)HDFS属性配置可靠性管理 回收站策略。设置HDFS文件系统回收站中的文件彻底删除的时间间隔

    22、为7天。进入到HDFS配置中修改fs.trash.interval的值为10,080(分钟)。如图3-9所示。注意:当该值为0时,表示禁用回收站的功能。图3-9 修改fs.trash.interval的值(2)HDFS属性配置可靠性管理 快照管理策略为HDFS文件系统中/1daoyun目录创建快照,首先需要设置该目录可进行快照功能,然后再进行创建快照。rootmaster#hadoop fs-ls/1daoyunFound 5 items-rw-r-r-3 root hdfs 46 2017-06-22 07:15/1daoyun/bigdata.txt首先允许/1daoyun目录以及子目录可

    23、创建快照。rootmaster#hadoop dfsadmin-allowSnapshot/1daoyunDEPRECATED:Use of this script to execute hdfs command is deprecated.Instead use the hdfs command for it.Allowing snaphot on/1daoyun succeeded创建快照。rootmaster#hadoop fs-createSnapshot/1daoyun s0Created snapshot/1daoyun/.snapshot/s0创建完成后,创建一个恢复文件夹,使用

    24、cp命令可以恢复快照,如下:rootmaster#hadoop fs-ls/1daoyun/.snapshotFound 1 itemsdrwxrwxrwx -root hdfs 0 2017-06-22 07:17/1daoyun/.snapshot/s0rootmaster#hadoop fs-mkdir/1daoyun/recoverrootmaster#hadoop fs-cp/1daoyun/.snapshot/s0/bigdata.txt/1daoyun/recoverrootmaster#hadoop fs-ls/1daoyun/recoverFound 1 items-rw-r

    25、-r-root hdfs 46 2017-06-22 07:22/1daoyun/recover/bigdata.txt(3)Shell上传采集数据至HDFS利用命令行上传采集的数据到/user/PC/dict_in目录。$hadoop fs put/data/Webmagic/*/user/PC/dict_in(4)配置案例开发环境运行这个案例前,需要对大数据开发环境进行配置,首先,需要在用于开发的PC机上安装Hadoop 2.7.0,为了方便,解压hadoop-2.7.0.zip资源包。另外还需要将hadoop-2.7.0/bin目录下的hadoop.dll文件拷贝到系统路径C:Windo

    26、wsSystem32下。替换拷贝完成后,将Hadoop安装目录添加到系统环境变量中,首先在用户变量中添加HADOOP_HOME变量,如图3-10所示。图3-10 编辑HADOOP_HOME变量随后在系统变量的Path中添加Hadoop的bin目录路径,如图3-11所示。图3-11 编辑Path变量添加完成后,需要配置Eclipse,将Eclipse的Hadoop插件hadoop-eclipse-kepler-plugin-2.2.0.jar文件拷贝到Eclipse的Plugin目录下,如图3-12所示。图3-12 Eclipse的Plugin目录 插件拷贝完成后,启动Eclipse,配置Had

    27、oop插件。在主菜单栏中选择“WindowPreferencesHadoop Map/Reduce”命令,在“Hadoop installation diretory”的文本框中输入hadoop-2.7.0的目录路径,最后单击“OK”按钮。如图3-13所示。图3-13 配置Hadoop安装路径 在Eclipse中能看到DFS Locations,如图3-14所示。图3-14 DFS Locations目录编辑HDFS的访问地址以及端口,如图3-15所示,编辑DFS Master下对应的Host以及Port文本框,这样Eclipse就能看到HDFS所对应的文件。如图3-15所示。图3-15 编辑

    28、HDFS的访问地址与端口编写程序上传数据。导入项目工程bigdatademo-hdfs,在HdfsClient类 中定义fs.defaultFS。定义HDFS的配置信息:conf=new Configuration();onf=new Confconf.set(fs.defaultFS,hdfs:/10.0.3.70:8020);实现上传文件upload的方法:/*上传文件*param localfile:本地的文件路径*param remotefile:上传到hdfs上的文件路径*throws Exception*/public void upload(String localfile,St

    29、ring remotefile)throwsException InputStream in=new BufferedInputStream(newFileInputStream(localfile);OutputStream out=fs.create(new Path(remotefile),newProgressable()Overridepublic void progress();IOUtils.copyBytes(in,out,4096,true);启动主函数,遍历/data/Webmagic目录下的文件,把文件上传到HDFS的/user/PC/dict_in目录。public s

    30、tatic void main(String args)throws Exception HdfsClient hdfsDB=new HdfsClient();File file=new File(/data/Webmagic);if(file.exists()File files=file.listFiles();for(File file2:files)if(!file2.isDirectory()hdfsDB.upload(file2.getAbsolutePath(),/user/PC/dict_in/+file2.getName();启动主函数,遍历/data/Webmagic目录下

    31、的文件,把文件上传到HDFS的/user/PC/dict_in目录。public static void main(String args)throws Exception HdfsClient hdfsDB=new HdfsClient();File file=new File(/data/Webmagic);if(file.exists()File files=file.listFiles();for(File file2:files)if(!file2.isDirectory()hdfsDB.upload(file2.getAbsolutePath(),/user/PC/dict_in/

    32、+file2.getName();任务3.3使用Sqoop转换MySQL中的学生成绩数据到Hive中任务目标1.熟悉Sqoop工具的使用方法。2.学会利用Navicat导入文件并创建表格的方法。3.学会利用Sqoop工具将MySQL表格导入Hive中的方法。任务实施(1)配置MySQL数据库在Navicat中导入文件并创建表格。打开Navicat并连接上本地数据库,如图3-16所示。图3-16 利用Navicat连接本地数据库在数据库recomm中导入文件。在连接列表中选择recomm数据库,在快捷工具栏下,单击“导入导出”按钮,如图3-17所示。图3-17 在数据库recomm中导入文件在弹

    33、出的窗口中选择文件格式,这里为txt文件。在导入类型中选中“文字文件(*.txt)”单选按钮,最后单击“下一步”按钮,如图3-18所示。图3-18 选择文件格式 单击“导入从:”文本框旁“”按钮,选择文件保存的路径。单击“”按钮,在“编码”下拉菜单中选择“65001(UTF-8)”菜单命令,单击“下一步”按钮。如图3-19所示。图3-19 设置编码格式根据文件保存形式选择分隔符。选中“栏位定界符”下“逗号(,)”单选按钮,然后单击“下一步”按钮,如图3-20 所示。图3-20 配置分隔符默认情况下会将导入文本文档的第一行作为字段名称,这里设置从文本文档的第二行开始导入,导入到数据数据库第一栏中

    34、。单击“下一步”按钮,如图3-21所示。图3-21 导入数据配置最后多次单击“下一步”按钮,使用默认配置,直到最后单击“开始”按钮,完成导入配置,如图3-22所示。图3-22 完成导入操作可以看到,该数据库下生成了名为gradstu的表格,打开后如图3-23所示。图3-22 完成导入操作(2)利用Sqoop将MySQL导入Hive中在Linux虚拟机上进入Hive,查看现有哪些表格。如图3-24所示。图3-24 查看Hive中的表图3-25 查看导入结果退出Hive,并使用sqoop命令行代码进行数据库导入,代码如下:sqoop import-connect jdbc:mysql:/192.1

    35、68.0.134:3306/recomm-username root-P table gradstu-hive-import-m 1上图中的192.168.0.134即为数据库的IP地址,3306为端口,用户名为root,-P为手动输入密码。注意:如果数据库安装在了本地注意:如果数据库安装在了本地WindowsWindows系统中,需要关闭防火墙,才能系统中,需要关闭防火墙,才能使远程使远程LinuxLinux虚拟机与本地虚拟机与本地WindowsWindows系统相互系统相互pingping通通 。运行成功后再进入Hive,查看所有表格。图3-26 查询表中数据可以看到,已经有了gradstu这个表格,现在查看这个表格内容,运行如下代码:hive select*from gradstu;发现表格已经导入,至此功能完成!如图3-26所示。通过本项目,主要学习了数据采集的功能,其中分为网络爬虫与数据传输两部分。网络爬虫选用了WebMagic爬虫框架,其基于Java开发的特点与学情分析系统开发环境(Java EE)相吻合,同时通过网络爬虫的开发,帮助使用者熟悉HTML的基本结构以及解析网页内容的方法。在数据传输部分,主要实现了本地文件系统与HDFS文件系统的连接,以及MySQL数据库与Hive数据仓库的数据传输。项目小结

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Hadoop大数据平台构建与应用课件项目3就业岗位数据采集和存储.pptx
    链接地址:https://www.163wenku.com/p-4104894.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库