1、大数据技术实践实验报告-本页仅作为文档封面,使用时请直接删除即可-内页可以根据需求调整合适字体及大小-大数据技术实践实验报告(总59页)实 验 报 告课程名称: 大数据技术实践 实验项目: 大数据平台 实验仪器: PC机 学 院: 计算机学院 专 业: 计算机科学与技术 班级姓名: * 学 号: * 日 期: 2019-5-9 指导教师: * 成 绩: 一.实验目的1. 熟练掌握大数据计算平台相关系统的安装部署2. 理解大数据MapReduce计算模型,并掌握MapReduce程序开发3. 掌握Hive的查询方法4. 掌握Spark的基本操作二.实验内容1. Hadoop完全分布模式安装2.
2、Hadoop开发插件安装3. MapReduce代码实现4. Hive安装部署5. Hive查询6. Spark Standalone模式安装7. Spark Shell操作三.实验过程Hadoop开发插件安装实验步骤: 开发工具以及Hadoop默认已经安装完毕,安装在/apps/目录下。2.在Linux本地创建/data/hadoop3目录,用于存放所需文件。切换目录到/data/hadoop3目录下,并使用wget命令,下载所需的插件。2. 将插件,从/data/hadoop3目录下,拷贝到/apps/eclipse/plugins的插件目录下。3. 进入ubuntu图形界面,双击ecli
3、pse图标,启动eclipse。5.在Eclipse窗口界面,依次点击Window = Open Perspective = Other。弹出一个窗口。选择Map/Reduce,并点击OK,可以看到窗口中,有三个变化。(左侧项目浏览器、右上角操作布局切换、面板窗口)如果在windows下,则需要手动调出面板窗口Map/Reduce Locations面板,操作为,点击window = show view = Other。在弹出的窗口中,选择Map/Reduce Locations选项,并点击OK。这样便可以调出视图窗口Map/Reduce Location。6.添加Hadoop配置,连接Had
4、oop集群。在这里添加Hadoop相关配置。Location name,是为此配置起的一个名字。DFS Master,是连接HDFS的主机名和端口号。点击Finish保存配置。7.另外还需保证Hadoop中的HDFS相关进程已经启动。在终端命令行输入jps查看进程状态。view plaincopy1.jps若不存在hdfs相关的进程,如Namenode、Datanode、secondarynamenode,则需要先切换到HADOOP_HOME下的sbin目录,启动hadoop。view plaincopy1.cd/apps/hadoop/sbin2./8.展开左侧项目浏览视图,可以看到HDFS
5、目录结构。9.上图发现HDFS上,没有存放任何目录。那下面来创建一个目录,检测插件是否可用。右键myhadoop下的文件夹,在弹出的菜单中,点击Create new directory。输入目录名称,点击OK则创建目录成功。右键文件夹,点击Refresh,可用刷新HDFS目录。到此Hadoop开发插件已经安装完毕!3.MapReduce代码实现实验步骤:1.切换目录到/apps/hadoop/sbin下,启动hadoop。view plaincopy1.cd/apps/hadoop/sbin2./2.在linux上,创建一个目录/data/mapreduce1。view plaincopy1.
6、mkdir-p/data/mapreduce13.切换到/data/mapreduce1目录下,使用wget命令从网址 ,下载文本文件buyer_favorite1。view plaincopy1.cd/data/mapreduce12.wget依然在/data/mapreduce1目录下,使用wget命令,从,下载项目用到的依赖包。view plaincopy1.wget将解压到当前目录下。view plaincopy1.tar-xzvf4.将linux本地/data/mapreduce1/buyer_favorite1,上传到HDFS上的/mymapreduce1/in目录下。若HDFS目
7、录不存在,需提前创建。view plaincopy1.hadoopfs-mkdir-p/mymapreduce1/in2.hadoopfs-put/data/mapreduce1/buyer_favorite1/mymapreduce1/in5.打开Eclipse,新建Java Project项目。并将项目名设置为mapreduce1。6.在项目名mapreduce1下,新建package包。并将包命名为mapreduce 。7.在创建的包mapreduce下,新建类。并将类命名为WordCount。8.添加项目所需依赖的jar包,右键单击项目名,新建一个目录hadoop2lib,用于存放项目
8、所需的jar包。将linux上/data/mapreduce1目录下,hadoop2lib目录中的jar包,全部拷贝到eclipse中,mapreduce1项目的hadoop2lib目录下。选中hadoop2lib目录下所有的jar包,单击右键,选择Build Path=Add to Build Path9.编写Java代码,并描述其设计思路。下图描述了该mapreduce的执行过程大致思路是将hdfs上的文本作为输入,MapReduce通过InputFormat会将文本进行切片处理,并将每行的首字母相对于文本文件的首地址的偏移量作为输入键值对的key,文本内容作为输入键值对的value,经过
9、在map函数处理,输出中间结果的形式,并在reduce函数中完成对每个单词的词频统计。整个程序代码主要包括两部分:Mapper部分和Reducer部分。Mapper代码view plaincopy1.publicstaticclassdoMapperextendsMapperWordCount类文件中,单击右键=Run As=Run on Hadoop选项,将MapReduce任务提交到Hadoop中。11.待执行完毕后,打开终端或使用hadoop eclipse插件,查看hdfs上,程序输出的实验结果。view plaincopy1.hadoopfs-ls/mymapreduce1/out2
10、.hadoopfs-cat/mymapreduce1/out/part-r-000004. Hive安装部署实验步骤:1.首先在Linux本地,新建/data/hive1目录,用于存放所需文件。view plaincopy1.mkdir-p/data/hive1切换目录到/data/hive1下,使用wget命令,下载hive所需安装包以及。view plaincopy1.cd/data/hive12.wget3.wget2.将/data/hive1目录下的,解压缩到/apps目录下。view plaincopy1.tar-xzvf-C/apps/再切换到/apps目录下,将/apps/,重命
11、名为hive。view plaincopy1.cd/apps2.mv/apps/apps/hive3.使用vim打开用户环境变量。view plaincopy1.sudovim/.bashrc将Hive的bin目录,添加到用户环境变量PATH中,然后保存退出。view plaincopy1.#hiveconfig2.exportHIVE_HOME=/apps/hive3.exportPATH=$HIVE_HOME/bin:$PATH执行source命令,使Hive环境变量生效。view plaincopy1.source/.bashrc4.由于Hive需要将元数据,存储到Mysql中。所以需要
12、拷贝/data/hive1目录下的到hive的lib目录下。view plaincopy1.cp/data/hive1/apps/hive/lib/5.下面配置Hive,切换到/apps/hive/conf目录下,并创建Hive的配置文件。view plaincopy1.cd/apps/hive/conf2.touch使用vim打开文件。view plaincopy1.vim并将下列配置项,添加到文件中。view plaincopy1.2.3.4.jdbc:;characterEncoding=latin15.6.7.8.9.10.11.12.root13.14.15.16.strongs17
13、.18.由于Hive的元数据会存储在Mysql数据库中,所以需要在Hive的配置文件中,指定mysql的相关信息。:数据库链接字符串。:连接数据库的驱动包。:数据库用户名。:连接数据库的密码。此处的数据库的用户名及密码,需要设置为自身系统的数据库用户名及密码。6.另外,还需要告诉Hive,Hadoop的环境配置。所以我们需要修改文件。首先我们将重命名为。view plaincopy1.mv/apps/hive/conf/apps/hive/conf/使用vim打开文件。view plaincopy1.vim追加Hadoop的路径,以及Hive配置文件的路径到文件中。view plaincopy
14、1.#SetHADOOP_HOMEtopointtoaspecifichadoopinstalldirectory2.#HADOOP_HOME=$bin/././hadoop3.HADOOP_HOME=/apps/hadoop4.#HiveConfigurationDirectorycanbecontrolledby:5.#exportHIVE_CONF_DIR=6.exportHIVE_CONF_DIR=/apps/hive/conf7.下一步是配置Mysql,用于存储Hive的元数据。首先,需要保证Mysql已经启动。执行以下命令,查看Mysql的运行状态。view plaincopy1.
15、sudoservicemysqlstatus通过输出,可以看出Mysql未启动。所以需要执行启动命令。view plaincopy1.sudoservicemysqlstart如果未安装Mysql则需要执行安装命令。若我们的环境已安装Mysql,则无需执行此步。view plaincopy1.sudoapt-getinstallmysql-server8.开启Mysql数据库。view plaincopy1.mysql-uroot-p此时会提示输入密码,此处密码为strongs创建名为hive的数据库,编码格式为latin1,用于存储元数据。view plaincopy1.createdata
16、basehiveCHARACTERSETlatin1;查看数据库是否创建成功。view plaincopy1.showdatabases;下面,输入exit退出Mysql。view plaincopy1.exit9.执行测试。由于Hive对数据的处理,依赖MapReduce计算模型,所以需要保证Hadoop相关进程已经启动。输入jps,查看进程状态。若Hadoop相关进程未启动,则需启动Hadoop。view plaincopy1./apps/hadoop/sbin/启动Hadoop后,在终端命令行界面,直接输入hive便可启动Hive命令行模式。view plaincopy1.hive输入H
17、QL语句查询数据库,测试Hive是否可以正常使用。view plaincopy1.showdatabases;至此Hive安装完毕。5. Hive基本操作实验步骤:一、实验环境准备1.首先在Linux本地新建/data/hive2目录。view plaincopy1.mkdir-p/data/hive22.切换到/data/hive2目录下,使用wget命令,下载 plaincopy1.cd/data/hive22.wget3.wget3.输入jps检查Hadoop相关进程,是否已经启动。若未启动,切换到/apps/hadoop/sbin目录下,启动Hadoop。view plaincopy1
18、.jps2.cd/apps/hadoop/sbin3./4.开启Hive,首先,需要保证Mysql启动。执行以下命令,查看Mysql的运行状态。view plaincopy1.sudoservicemysqlstatus输出显示Mysql未启动。执行以下启动命令。view plaincopy1.sudoservicemysqlstart然后切换到/apps/hive/bin目录下,开启Hive。view plaincopy1.cd/apps/hive/bin2./hive二、Hive数据仓库的操作1.在Hive中创建一个数据仓库,名为DB。view plaincopy1.createdatab
19、aseDB;2.以上简单创建了一个DB库,但是这条sql可以更进一步的优化,我们可以加上if not exists。view plaincopy1.createdatabaseifnotexistsDB;解析:在创建库时,应避免新建的库名与已有库名重复,如果库名重复将会报出以下错误(我在已有DB库的前提下,再次创建了DB库)。错误提示数据仓库DB已经存在, 那么加入的if not exists就起了作用,如下(在已有DB库的前提下,再次创建DB库,提示成功不会报错)加入if not exists的意思是如果没有DB库就创建,如果已有就不再创建。3.查看数据仓库DB的信息及路径。view pla
20、incopy1.describedatabaseDB;4.删除名为DB的数据仓库。view plaincopy1.dropdatabaseifexistsDB;三、Hive数据表的操作Hive的数据表分为两种:内部表和外部表。Hive创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据,生产中常使用外部表。下面详细介绍对表操作的命令及使用方法:即将创建的表,表名不能和已有表名重复,否则会
21、报错,现在我们show tables一下,查看已存在的表。view plaincopy1.showtables;现在库中没有表。1.创建一个名为cat的内部表,有两个字段为cat_id和cat_name,字符类型为string。view plaincopy1.createtablecat(cat_idstring,cat_namestring);查看是否创建成功。view plaincopy1.showtables;下面我们再次创建一个与刚才表名相同的表,看一下报错。view plaincopy1.createtablecat(cat_idstring,cat_namestring);提示错误
22、,该表已经存在!说明表与库一样,名称不能重复,解决方法是加入if not exists。2.创建一个外部表,表名为cat2,有两个字段为cat_id和cat_name,字符类型为string。view plaincopy1.createexternaltableifnotexistscat2(cat_idstring,cat_namestring);查看是否创建成功。view plaincopy1.showtables;外部表较内部表而言,只是在create后加了一个external。3.修改cat表的表结构。对cat表添加两个字段group_id和cat_code。view plaincop
23、y1.altertablecataddcolumns(group_idstring,cat_codestring);使用desc命令查看一下加完字段后的cat表结构 。view plaincopy1.desccat;4.修改cat2表的表名。把cat2表重命名为cat3 。view plaincopy1.altertablecat2renametocat3;这个命令可以让用户为表更名,数据所在的位置和分区名并不改变。5.删除名为cat3的表并查看。view plaincopy1.droptablecat3;2.showtables;6.创建与已知表相同结构的表,创建一个与cat表结构相同的表,
24、名为cat4,这里要用到like关键字。view plaincopy1.createtablecat4likecat;创建完成并查看结果。view plaincopy1.showtables;四、Hive中数据的导入导出以下介绍四种常见的数据导入方式:1.从本地文件系统中导入数据到Hive表。首先,在Hive中创建一个cat_group表,包含group_id和group_name两个字段,字符类型为string,以“t”为分隔符,并查看结果。view plaincopy1.createtablecat_group(group_idstring,group_namestring)rowform
25、atdelimitedfieldsterminatedbytstoredastextfile;2.showtables;row format delimited关键字,是用来设置创建的表在加载数据的时候,支持的列分隔符。stored as textfile关键字,是用来设置加载数据的数据类型,默认是TEXTFILE,如果文件数据是纯文本,就是使用 stored as textfile,然后从本地直接拷贝到HDFS上,Hive直接可以识别数据。然后,将Linux本地/data/hive2目录下的cat_group文件导入到Hive中的cat_group表中。view plaincopy1.loa
26、ddatalocalinpath/data/hive2/cat_groupintotablecat_group;通过select语句查看cat_group表中是否成功导入数据,由于数据量大,使用limit关键字限制输出10条记录。view plaincopy1.select*fromcat_grouplimit10;导入成功。2.将HDFS上的数据导入到Hive中。首先,另外开启一个操作窗口,在HDFS上创建/myhive2目录。view plaincopy1.hadoopfs-mkdir/myhive2然后,将本地/data/hive2/下的cat_group表上传到HDFS的/myhive
27、2上,并查看是否创建成功。view plaincopy1.hadoopfs-put/data/hive2/cat_group/myhive22.hadoopfs-ls/myhive2接着,在Hive中创建名为cat_group1的表,创表语句如下。view plaincopy1.createtablecat_group1(group_idstring,group_namestring)2.rowformatdelimitedfieldsterminatedbytstoredastextfile;最后,将HDFS下/myhive2中的表cat_group导入到Hive中的cat_group1表中 ,并查看结果。view plaincopy1.loaddatainpath/myhive2/cat_groupintotablecat_group1;2.select*fromcat_group1limit10;导入成功。提示:HDFS中数据导入到Hive中与本地数据导入到hive中的区别是load data后少了local。3.从别的表中查询出相应的数据并导入到Hive中。首先在Hive中创建一个名为ca
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1