大数据实验报告【全集】 |
您所在的位置:网站首页 › 遥感基本原理实验报告怎么写 › 大数据实验报告【全集】 |
所用教材↑,配套PPT和厦门大学林子雨配套MOOC内容和书里的内容差不多。 【意味着课上不好好听,课下你还能看教科书补(╹ڡ╹ )】建议先实验再听课或看书。 若对你有帮助的话,记得点赞、关注我哦!实验中遇到不少困难,故本文较长,请耐心阅览! 实验标题:①安装Hadoop;②HDFS编程(安装);③HDFS编程;④Mapreduce编程 大数据类开放在线实践课程(能模拟实验,推荐):https://www.educoder.net/paths/158 ◉ 实验中用到的Linux命令: cd /home/hadoop #把/home/hadoop设置为当前目录 cd .. #返回上一级目录 cd ~ #进入到当前Linux系统登录用户的主目录(或主文件夹)。在 Linux 系统中,~代表的是用户的主文件夹, #即“/home/用户名”这个目录,如果当前登录用户名为 hadoop,则~就代表“/home/hadoop/”这个目录 ls #查看当前目录中的文件 ls -l #查看文件和目录的权限信息 mkdir input #在当前目录下创建input子目录 mkdir -p src/main/scala #在当前目录下,创建多级子目录src/main/scala cat /proc/version #查看Linux系统内核版本信息 cat /home/hadoop/word.txt #把/home/hadoop/word.txt这个文件全部内容显示到屏幕上 cat file1 file2 > file3 #把当前目录下的file1和file2两个文件进行合并生成文件file3 head -5 word.txt #把当前目录下的word.txt文件中的前5行内容显示到屏幕上 cp /home/hadoop/word.txt /usr/local/ #把/home/hadoop/word.txt文件复制到“/usr/local”目录下 rm ./word.txt #删除当前目录下的word.txt文件 rm –r ./test #删除当前目录下的test目录及其下面的所有文件 rm –r test* #删除当面目录下所有以test开头的目录和文件 tar -zxf ~/下载/spark-2.1.0.tgz -C /usr/local/ #把spark-2.1.0.tgz这个压缩文件解压到/usr/local目录下 mv spark-2.1.0 spark #把spark-2.1.0目录重新命名为spark chown -R hadoop:hadoop ./spark # hadoop是当前登录Linux系统的用户名,把当前目录下的spark子目录的所有权限, #赋予给用户hadoop ifconfig #查看本机IP地址信息 exit #退出并关闭Linux终端◉ Vim编辑器命令: sudo apt-get install vim vim word.txt 按Esc退出编辑 i编辑 :x 或 :wq 回车,保存后退出 :q 回车,不保存并退出 :q! 回车,不保存并强制退出◉ 每次重新启动虚拟机,或者在不同的地方(实验室或者宿舍)启动虚拟机,IP地址都可能会发生变化,所以每次登录Ubuntu系统以后,都需要重新查询IP地址 = “inet地址”。 ◉ virtual box怎么全屏显示? 启动Linux系统后,在虚拟机窗口的“设备”处选择“安装增强功能”,点击“运行”后会弹出授权窗体,安装后即可全屏。 一阵子不用虚拟机就忘怎么操作。 ◉ 关于Linux下JDK: $ which java 查看JDK的安装路径/usr/java/jdk/jdk1.8.0_172/ $ rm -rf /usr/java/jdk/jdk1.8.0_172/ 卸载JDK,并如下图所示,在~/.bashrc文件中把相关JAVA_HOME的配置信息删除。 $ java -version 或 $ java 或 $ javac 检查JDK版本,即检查是否存在JDK 始终无法自如更换JDK版本,网上多半说的是这种方法:https://blog.csdn.net/apple_4872330/article/details/104615894?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-3 我觉得我的方法更简单 ↓ 实验一 安装Hadoop(黑字基本都是废话,往下拉有推荐链接和我踩过的坑)一、实验目的 1. 掌握Linux虚拟机安装方法或者双操作系统安装方法。Hadoop在Linux操作系统上运行可以发挥最佳性能,鉴于目前很多读者可能正在使用Windows操作系统,因此,为了完成本书的后续实验,这里有必要通过本实验让读者掌握在Windows操作系统上搭建Linux虚拟机的方法,以及安装双操作系统的方法(同时安装Windows和Linux系统,电脑开机时,可以选择登录哪个系统)。 2. 掌握Hadoop的伪分布式安装方法。很多读者并不具备集群环境,需要在一台机器上模拟一个小的集群,因此,需要通过本实验让读者掌握在单机上进行Hadoop的伪分布式安装方法。 (实验一就是让伪分布式安装Hadoop,我见有些同学用Win10的Linux子系统(不装虚拟机和双系统的方法)来做此实验,也不失为一种很好的选择,推荐这篇博文:手把手教你启用Win10的Linux子系统(超详细)https://blog.csdn.net/zhangdongren/article/details/82663977) 二、实验平台 操作系统:Windows系统或者Ubuntu(或CentOS7)。 虚拟机软件:推荐使用的开源虚拟机软件为VirtualBox 。VirtualBox是一款功能强大的免费虚拟机软件,它不仅具有丰富的特色,而且性能也很优异,简单易用,可虚拟的系统包括Windows、Mac OS X、Linux、OpenBSD、Solaris、IBM OS2甚至Android 4.0系统等操作系统。读者可以在Windows系统上安装VirtualBox软件,然后在VirtualBox上安装并且运行Linux操作系统。本次实验默认的Linux发行版为Ubuntu14.04。 三、实验内容和要求 读者需要构建起Linux系统环境,并在Linux系统上安装Hadoop。 构建Linux系统环境,有两种方式:(1)在Windows系统上安装Linux虚拟机;(2)安装双操作系统,即在电脑上同时安装Windows和Linux系统,电脑开机时,可以选择登录哪个系统。 建议电脑比较新或者配置内存4G以上的电脑可以选择虚拟机安装,电脑较旧或配置内存小于等于4G的电脑强烈建议选择双系统安装,否则,在配置较低的计算机上运行LInux虚拟机,系统运行速度会非常慢。鉴于目前读者的计算机硬件配置一般不高,建议采用双系统安装。 建议读者在完成下列实验之前,仔细阅读网络教程:林子雨老师的blog是我目前看到最简洁明了的,务必看! 2015年出的教程:http://dblab.xmu.edu.cn/blog/285/ 针对3.1.3新版出的教程:http://dblab.xmu.edu.cn/blog/2441-2/注意:Hadoop版本不同,操作方式会有些许不同! 3.1 下载相关软件 如果读者正在使用Linux操作系统,可以跳过本步,不需要下载相关软件。如果读者正在使用Windows操作系统,并且选择虚拟机方式安装Linux系统,请下载VirtualBox虚拟机软件和Ubuntu14.04镜像文件。同时到Apache Hadoop官网下载Hadoop2.7.1版本安装文件。 3.2 安装Linux系统 读者可以选择下面两种方式中的一种方式来安装Linux系统。 3.2.1 虚拟机方式 如果读者正在使用Linux操作系统,则不需要了解Windows系统上的Linux虚拟机安装方法。如果读者正在使用Windows操作系统,则需要在Windows系统上安装Linux虚拟机。首先,在Windows系统上安装虚拟机软件VirtualBox;然后,在虚拟机软件VirtualBox上安装Ubuntu14.04操作系统。 3.2.2 双系统方式 在电脑上同时安装Windows和Linux系统,电脑开机时,可以选择登录哪个系统。可以参考“百度经验”中的安装指南。 第一步:制作安装U盘 根据下面指南,在一个U盘上制作启动安装盘,然后,电脑启动后,就可以从U盘启动安装Ubuntu系统。 http://jingyan.baidu.com/article/59703552e0a6e18fc007409f.html 第二步:双系统安装 请根据下面指南完成双系统安装: http://jingyan.baidu.com/article/dca1fa6fa3b905f1a44052bd.html 3.3 进行Hadoop伪分布式安装 在Linux环境下完成伪分布式环境的搭建,并运行Hadoop自带的WordCount实例检测是否运行正常。 我的配置:Ubuntu18.04.3LST + Hadoop3.1.3 + JDK-Linux-14.0.1 我踩过的坑:namenode格式化后,既没有Data文件夹,也无法启动DataNode进程明明按照林子雨老师的步骤一步步做的o(≧口≦)o 很多同学都没有遇到我这类问题,是人品的关系吗。。。 但我的输出结果如下 ↓ 用林子雨老师的方法无效 百度失败 尝试Hadoop2.7.7(有些同学就没问题)不仅没有DataNode和SecondaryNameNode还报错 _(:з)∠)_ 终于迎来了问题的突破口!我看了这篇文章,文末解决了我的问题:https://www.cnblogs.com/zhangyinhua/p/7647686.html#_label0 问题解决后的运行结果 ↓ 验证Hadoop是否启动成功? 以前的版本访问MapReduce的页面:http://localhost:50030 HDFS的页面:http://localhost:50070 3.x的版本访问Hadoop Administration:http://localhost:9870 实验二 HDFS编程一、实验目的 熟悉HDFS操作常用的Java API。 二、实验平台 操作系统:Linux Hadoop版本:2.6.0或以上版本 JDK版本:1.6或以上版本 Java IDE:Eclipse 三、实验内容和要求 在完成以下实验之前,请认真阅读“大数据课程学生服务站”的学习指南栏目中的相关内容,具体请参见《大数据技术原理与应用 第三章 Hadoop分布式文件系统 学习指南》, 2015年出的教程: http://dblab.xmu.edu.cn/blog/290-2/ 2020年出的教程:http://dblab.xmu.edu.cn/blog/2460-2/ 编写一个Java程序,打开一个HDFS中的文件,并读取其中的数据,输出到标准输出;编写一个Java程序,新建一个HDFS文件,并向其中写入你的名字;编写一个Java程序,判断HDFS上是否存在某个文件?要求:在实验报告中,给出实验过程的一些必要截图,并附上源代码。 装Ubuntu时警告10G磁盘空间快见底了,我还没装什么软件呐。。。我参考了这些文章: VirtualBox 扩展虚拟硬盘容量 https://blog.csdn.net/ganshuyu/article/details/17954733 注*:我$partprobe会报Warning,在别的博文里看到:使用partprobe重载分区只能是对不同的硬盘才能及时生效。对于同一块硬盘,修改过分区信息后,必须重启系统才能使修改过的分区信息生效。 控制器SATA和IDE是什么? https://zhidao.baidu.com/question/49756416.html VBOX UBUNTU虚拟机扩容方案 虚拟分配空间转换为实际分配空间 将新开辟的/dev/sda2挂载到用户下面https://www.freesion.com/article/959318019/ VMware+Ubuntu18.04 磁盘扩容 用GParted工具将/dev/sda1与/dev/sda2合并https://blog.csdn.net/lhl_blog/article/details/86636217 我用了最后一篇的方法,主要是简单,还有我不知道挂载到用户下面的/dev/sda2怎么用(怎么改软件默认下载路径)。挂载是指给磁盘分区(包括被虚拟出来的磁盘分区)分配一个盘符。在第三方软件,如磁盘分区管理软件、虚拟磁盘软件中,也附带有挂载功能。在linux操作系统中,挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上。我们要访问存储设备中的文件,必须将文件所在专的分区挂载到一个已存在的目录上,然后通过访问这个目属录来访问存储设备。
新版Ubuntu自带“磁盘”工具,和另外下载的GParted功能一样,所以也可以不下载GParted。 我又踩坑了:没注意看上半部分教程,搞了半天没理解/user/hadoop目录哪来的?5个文件怎么被执行?所以一定要认真看林子雨老师的教程 ↓林子雨老师给的示例:在目录“hdfs://localhost:9000/user/hadoop”下先上传5个文件file1.txt、file2.txt、file3.txt、file4.abc和file5.abc,要求从该目录中过滤出所有后缀名不为“.abc”的文件,对过滤之后的文件进行读取,并将这些文件的内容合并到文件“hdfs://localhost:9000/user/hadoop/merge.txt”中。 示例结果: 实验结果:把 f.txt 先上传到HDFS的“/user/”目录下 ①只读取了一行,想全部读取可以写个for循环。 ②把全部内容改写成“Hello world”。 ③检查文件是否存在。 实验三 HBase编程一、实验目的 1. 理解HBase在Hadoop体系结构中的角色; 2. 熟练使用HBase操作常用的Shell命令; 3. 熟悉HBase操作常用的Java API。 二、实验平台 操作系统:Linux Hadoop版本:2.6.0或以上版本 HBase版本:1.1.2或以上版本 JDK版本:1.6或以上版本 Java IDE:Eclipse 三、实验内容和要求 我的配置:Ubuntu18.04.3LST + Hadoop3.1.3 + JDK-Linux-14.0.1 + HBase-2.2.5 2020年出的教程:http://dblab.xmu.edu.cn/blog/2442-2/1. 根据上面给出的表格,用Hbase Shell模式设计student学生表格。 a)设计完后,用scan指令浏览表的相关信息,给出截图。 b)查询zhangsan 的Computer成绩。给出截图。 c)修改lisi的Math成绩,改为95。给出截图。 2. 根据上面已经设计出的student,用Hbase API编程。 a)添加数据:English:45 Math:89 Computer:100 b)获取scofield的English成绩信息 命令'vim'可在'usr/bin/vi/处找到 由于/usr/bin不在PATH环境变量中,故无法找到该命令。 命令'lesspipe'可在以下位置找到... 由于/bin:/usr/bin不在PATH环境变量中,故无法找到该命令。 解决方法:检查 ~/.bashrc 文件,路径是否写对。 一定要记得关HBase和Hadoop,不然再次打开时就会报错! 在HBase shell中出现error: KeeperErrorCode = NoNode for /hbase/master参考:https://blog.csdn.net/shijinxin3907837/article/details/101544390 解决方法:在没有重要文件得情况下,删除tmp文件夹,重新初始化 实验代码: import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Table; public class hbase_insert { //三个静态成员对象 public static Configuration configuration;//管理HBase的配置信息 public static Connection connection;//管理HBase的连接 public static Admin admin; //管理HBase数据库的表信息 public static void main(String[] args) { // TODO Auto-generated method stub configuration = HBaseConfiguration.create();//使用默认的HBase配置文件创建configuration configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase");//连接hbase try{ connection = ConnectionFactory.createConnection(configuration); admin = connection.getAdmin(); }catch (IOException e){ e.printStackTrace(); } try {//插入的信息 insertRow("student","scofield","score","English","45"); insertRow("student","scofield","score","Math","89"); insertRow("student","scofield","score","Computer","100"); } catch (IOException e) {//异常处理 // TODO Auto-generated catch block e.printStackTrace(); } close(); } public static void insertRow(String tableName,String rowKey,String colFamily, String col,String val) throws IOException { Table table = connection.getTable(TableName.valueOf(tableName)); Put put = new Put(rowKey.getBytes()); put.addColumn(colFamily.getBytes(), col.getBytes(), val.getBytes()); table.put(put); table.close(); } //关闭连接 public static void close(){ try{ if(admin != null){ admin.close(); } if(null != connection){ connection.close(); } }catch (IOException e){ e.printStackTrace(); } } } 实验结果:参考:大数据——四种数据库(MySQL,HBase,MongoDB,Redis)操作实例总结https://blog.csdn.net/weixin_43042683/article/details/106230370 先开Hadoop→HBase(最不方便的是中途你最好不要写错一个字,不然很容易报错)→先关HBase→Hadoop ① 用Hbase Shell模式设计student学生表格,用scan指令浏览表的相关信息 ②查询 zhangsan 的Computer成绩 ③修改 lisi 的Math成绩,改为95 ④用Hbase API编程,添加数据:English:45 Math:89 Computer:100 ⑤获取 scofield 的English成绩信息 实验四 MapReduce编程一、实验目的 1. 理解Hadoop中MapReduce模块的处理逻辑 2. 熟悉MapReduce编程 二、实验平台 操作系统:Linux 工具:Eclipse或者Intellij Idea等Java IDE 三、实验内容和要求 2020年出的教程:http://dblab.xmu.edu.cn/blog/2481-2/1. 在电脑上新建文件夹input,并input文件夹中创建三个文本文件:file1.txt,file2.txt,file3.txt 三个文本文件的内容分别是: file1.txt: hello dblab world file2.txt: hello dblab hadoop file3.txt: hello mapreduce 2. 启动hadoop伪分布式,将input文件夹上传到HDFS上 3. 编写mapreduce程序,实现单词出现次数统计。统计结果保存到hdfs的output文件夹。 4. 获取统计结果(给出截图或相关结果数据) 实验代码: import java.io.IOException; import java.util.Iterator; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.util.GenericOptionsParser; public class WordCount { public WordCount() { } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); String[] otherArgs = (new GenericOptionsParser(conf, args)).getRemainingArgs(); if(otherArgs.length < 2) { System.err.println("Usage: wordcount [...] "); System.exit(2); } Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(WordCount.TokenizerMapper.class); job.setCombinerClass(WordCount.IntSumReducer.class); job.setReducerClass(WordCount.IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); for(int i = 0; i < otherArgs.length - 1; ++i) { FileInputFormat.addInputPath(job, new Path(otherArgs[i])); } FileOutputFormat.setOutputPath(job, new Path(otherArgs[otherArgs.length - 1])); System.exit(job.waitForCompletion(true)?0:1); } public static class TokenizerMapper extends Mapper { private static final IntWritable one = new IntWritable(1); private Text word = new Text(); public TokenizerMapper() { } public void map(Object key, Text value, Mapper.Context context) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while(itr.hasMoreTokens()) { this.word.set(itr.nextToken()); context.write(this.word, one); } } } public static class IntSumReducer extends Reducer { private IntWritable result = new IntWritable(); public IntSumReducer() { } public void reduce(Text key, Iterable values, Reducer.Context context) throws IOException, InterruptedException { int sum = 0; IntWritable val; for(Iterator i$ = values.iterator(); i$.hasNext(); sum += val.get()) { val = (IntWritable)i$.next(); } this.result.set(sum); context.write(key, this.result); } } } 实验结果:①编写mapreduce程序,实现单词出现次数统计。 ②在电脑上新建文件夹input,并input文件夹中创建三个文本文件:file1.txt,file2.txt,file3.txt,启动hadoop伪分布式,将input文件夹上传到HDFS上 ③统计结果保存到hdfs的output文件夹。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |