1.3
实验2
熟悉常用的HDFS操作
1.实验目的
(1)理解HDFS在Hadoop体系结构中的角色;
(2)熟练使用HDFS操作常用的Shell命令;
(3)熟悉HDFS操作常用的Java API。
2. 实验平台
(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);
(2)Hadoop版本:3.1.3;
(3)JDK版本:1.8;
(4)Java IDE:Eclipse。
3. 实验步骤
(一)编程实现以下功能,并利用Hadoop提供的Shell命令完成相同任务:
(1) 向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,则由用户来指定是追加到原有文件末尾还是覆盖原有的文件;
创建文本文件 homework2.txt,内容如下。
使用hadoop fs -put homework2.txt /text/命令上传文件
(2) 从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;
查看本地文件
本地已经存在一个名为 homework2.txt 的文件,我可以使用 getmerge 命令来下载 HDFS 上的文件,并自动重命名以避免覆盖本地文件。hadoop fs -getmerge /text/homework2.txt homework2.txt
(3) 将HDFS中指定文件的内容输出到终端中;
(4) 显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息;
(5) 给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息;
(6) 提供一个HDFS内的文件的路径,对该文件进行创建和删除操作。如果文件所在目录不存在,则自动创建目录;
首先查看hadoop下没有text2的目录,然后使用命令在text2目录下创建wr.txt文本文件。
删除text2下的wr.txt文件。
(7) 提供一个HDFS的目录的路径,对该目录进行创建和删除操作。创建目录时,如果目录文件所在目录不存在,则自动创建相应目录;删除目录时,由用户指定当该目录不为空时是否还删除该目录;
创建目录text3
删除text3
(8) 向HDFS中指定的文件追加内容,由用户指定内容追加到原有文件的开头或结尾;
(9) 删除HDFS中指定的文件;
删除text2下的wr.txt文件。
(10) 在HDFS中,将文件从源路径移动到目的路径。
(二)编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”,要求如下:实现按行读取HDFS中指定文件的方法“readLine()”,如果读到文件末尾,则返回空,否则返回文件一行的文本。
在idea中连接HDFS。
创建类,实现URL连接HFFS,最后结果。
(三)查看Java帮助手册或其它资料,用“java.net.URL”和“org.apache.hadoop.fs.FsURLStreamHandlerFactory”编程完成输出HDFS中指定文件的文本到终端中。
4.实验报告
题目: 熟悉常用的HDFS操作 姓名 赵梓腾 日期2024-11-24
实验环境:Linux3.10.0-957.el7.x86_64,Hadoop3.3.4 IDEA2024
实验内容与完成情况:全部完成
出现的问题:idea远程连接HDFS出现问题
解决方案(列出遇到的问题和解决办法,列出没有解决的问题):使用远程连接池就可以解决,加入新的依赖,修改连接的ip地址。
实验3
熟悉常用的HBase操作
1.实验目的
(1)理解HBase在Hadoop体系结构中的角色;
(2)熟练使用HBase操作常用的Shell命令;
(3)熟悉HBase操作常用的Java API。
2.实验平台
(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);
(2)Hadoop版本:3.1.3;
(3)HBase版本:2.2.2;
(4)JDK版本:1.8;
(5)Java IDE:Eclipse。
3. 实验步骤
(一)编程实现以下指定功能,并用Hadoop提供的HBase Shell命令完成相同任务:
(1) 列出HBase所有的表的相关信息,例如表名;
表为空
首先创建一个表,就按照下面的学生表创建。create 'Student','Sname','Ssex','Sage','Sdept'
在插入一些信息。
put 'Student', 'row1', 'Sname', '赵梓腾'
put 'Student', 'row1', 'Ssex', '男'
put 'Student', 'row1', 'Sage', '100'
put 'Student', 'row1', 'Sdept', 'Computer'
put 'Student', 'row2', 'Sname', '小明'
put 'Student', 'row2', 'Ssex', '女'
put 'Student', 'row2', 'Sage', '22'
put 'Student', 'row2', 'Sdept', 'dirt'
put 'Student', 'row3', 'Sname', '小李'
put 'Student', 'row3', 'Ssex', '女'
put 'Student', 'row3', 'Sage', '20'
put 'Student', 'row3', 'Sdept', 'physics'
查看表名。
(2) 在终端打印出指定的表的所有记录数据;
我插入的中文数据他没法识别,只能是显示字符,但是可以查看记录。
修改一下数据。
(3) 向已经创建好的表添加和删除指定的列族或列;
添加名为 'NewC' 的列
删除列 'Sname'
(4) 清空指定的表的所有记录数据;
truncate 'Student'清除
(5) 统计表的行数。
count 'Student'
(二)HBase数据库操作
- 现有以下关系型数据库中的表和数据(见表14-3到表14-5),要求将其转换为适合于HBase存储的表并插入数据:
表14-3 学生表(Student)
学号(S_No) 姓名(S_Name) 性别(S_Sex) 年龄(S_Age)
2015001 Zhangsan male 23
2015002 Mary female 22
2015003 Lisi male 24
表14-4 课程表(Course)
课程号(C_No) 课程名(C_Name) 学分(C_Credit)
123001 Math 2.0
123002 Computer Science 5.0
123003 English 3.0
表14-5 选课表(SC)
学号(SC_Sno) 课程号(SC_Cno) 成绩(SC_Score)
2015001 123001 86
2015001 123003 69
2015002 123002 77
2015002 123003 99
2015003 123001 98
2015003 123002 95
首先创建三个表。
create 'Student', 'info'
create 'Course', 'info'
create 'SC', 'info'
插入数据。
- 请编程实现以下功能:
(1)createTable(String tableName, String[] fields)
创建表,参数tableName为表的名称,字符串数组fields为存储记录各个字段名称的数组。要求当HBase已经存在名为tableName的表的时候,先删除原有的表,然后再创建新的表。
编写java代码,首先检查指定的表是否已经存在,如果存在,则先禁用该表,然后删除它。之后,它会创建一个新的表,并为每个列族名称添加列族描述符。
编写主函数。
运行结果如图。
(2)addRecord(String tableName, String row, String[] fields, String[] values)
向表tableName、行row(用S_Name表示)和字符串数组fields指定的单元格中添加对应的数据values。其中,fields中每个元素如果对应的列族下还有相应的列限定符的话,用“columnFamily:column”表示。例如,同时向“Math”、“Computer Science”、“English”三列添加成绩时,字符串数组fields为{“Score:Math”, ”Score:Computer Science”, ”Score:English”},数组values存储这三门课的成绩。
编写java。
修改主函数。
运行结果。
在Linux中查看
(3)scanColumn(String tableName, String column)
浏览表tableName某一列的数据,如果某一行记录中该列数据不存在,则返回null。要求当参数column为某一列族名称时,如果底下有若干个列限定符,则要列出每个列限定符代表的列的数据;当参数column为某一列具体名称(例如“Score:Math”)时,只需要列出该列的数据。
编写java。
修改完主函数运行。
(4)modifyData(String tableName, String row, String column)
修改表tableName,行row(可以用学生姓名S_Name表示),列column指定的单元格的数据。
编写Java。
修改主函数,在修改完信息之后,查看信息。
(5)deleteRow(String tableName, String row)
删除表tableName中row指定的行的记录。
编写java。
修改主函数。运行。
4.实验报告
题目: 熟悉常用的HBase操作 姓名 赵梓腾 日期
2024-12-8
实验环境:Linux3.10.0-957.el7.x86_64,Hadoop3.3.4 IDEA2024
实验内容与完成情况:全部完成
出现的问题:Hbase远程连接出现问题。
解决方案(列出遇到的问题和解决办法,列出没有解决的问题):在网上找连接资料,导入依赖,然后修改连接ip就可以。
posted on 2026-01-03 13:28 我爱玩原神(原神大王) 阅读(4) 评论(0) 收藏 举报
浙公网安备 33010602011771号