HadoopExpriment


图片我懒得搬了,要一张一张的改路径太麻烦了

实验三

七、实验步骤

(一)Hbase shell 命令

1.启动hadoop

cd /usr/local/hadoop

./sbin/start-all.sh

2.启动hbase和hbase shell

cd /usr/local/hbase

./bin/start-hbase.sh

./bin/hbase shell

img

l 进入HBase Shell命令行模式以后,用户可以通过输入Shell命令操作HBase数据库。

\3. 用list命令查看当前HBase数据库中已经创建了哪些表

img

\4. 若已存在student表,则删除

disable ‘student’

drop ‘student’

\5. 用create命令创建表

create ‘student’,’Sname’,’Ssex’,’Sage’,’Sdept’,’course’

img

\6. 查看数据

l HBase中有两个用于查看数据的命令:1. get命令,用于查看表的某一行数据;2. scan命令用于查看某个表的全部数据

get ‘student’,’20202020’

scan ‘student’

\7. 用put命令将自己的姓名、学号添加到student表中。例如姓名为‘Zhangsan’,学号‘20202020’:

put ‘student’,’20202020’,’Sname’,’Zhangsan’

l 即为student表添加了学号为20202020,名字为Zhangsan的一行数据,其行键为20202020

put ‘student’,’20202020’,’course:math’,’80’

l 即为20202020行下的course列族的math列添加了一个数据。

\8. 在HBase中用delete以及deleteall命令进行删除数据操作,它们的区别是:1. delete用于删除一个数据,是put的反向操作;2. deleteall操作用于删除一行数据。

delete ‘student’,’20202020’,’Ssex’

l 删除了student表中20202020行下的Ssex列的所有数据。

get ‘student’,‘20202020’

l 查看是否删除成功

deleteall ‘student’,’20202020’

l 删除了student表中的95001行的全部数据。

\8. 查询表历史数据

1)在创建表的时候,指定保存的版本数(假设指定为5)

create ‘teacher’,{NAME=>’username’,VERSIONS=>5}

2)插入数据然后更新数据,使其产生历史版本数据,注意:这里插入数据和更新数据都是用put命令

put ‘teacher’,’91001’,’username’,’Mary’

put ‘teacher’,’91001’,’username’,’Mary1’

put ‘teacher’,’91001’,’username’,’Mary2’

put ‘teacher’,’91001’,’username’,’Mary3’

put ‘teacher’,’91001’,’username’,’Mary4’

put ‘teacher’,’91001’,’username’,’Mary5’

3)查询时,指定查询的历史版本数。默认会查询出最新的数据。(有效取值为1到5)

get ‘teacher’,’91001’,{COLUMN=>’username’,VERSIONS=>5}

\9. 退出HBase数据库表操作

exit

l 注意:这里退出HBase数据库是退出对数据库表的操作,而不是停止启动HBase数据库后台运行。

\10. 停止HBase运行

bin/stop-hbase.sh

11.关闭Hadoop

./sbin/stop-all.sh

(二)Java API编程实例

\1. 启动hadoop,启动hbase(运行java代码时一定要保证hbase是启动状态)

cd /usr/local/hadoop

./sbin/start-all.sh

cd /usr/local/hbase

./bin/start-hbase.sh

2.在Eclipse中新建Java Project(Project名字为你名字的拼音,注意下图框起来部分)——>新建Class

imgimg

img

\3. 在工程中导入外部jar包

l 在项目名称上右键选Property,在弹出的对话框左侧列表中选择Java Build Path,如下图所示:选择Add External JARs

imgimg

l 导入hbase安装目录中的lib(usr/local/hbase/lib,注意目录不要选错)文件中的所有jar包

img

4.编写代码并运行

l 在Linux系统中打开浏览器,输入网址http://dblab.xmu.edu.cn/blog/install-hbase/复制代码。

img

l 复制完成后,编译运行,Run as Java Application。运行成功后如图

img

\5. 进入Hbase shell

scan ‘Score’

\6. 在Eclipse中执行其它语句(除了createTable语句外,每人任选两条以上语句执行,每次执行一条,在Eclipse执行完后在shell中查看结果。)

l 主函数中的语句请任选两条执行,只需删除其前的//,并将其它语句注释掉即可,如:执行insertRow时请将其他语句注释

img

l 执行完成后在shell中查看结果

img

7.关闭hbase和hadoop

bin/stop-hbase.sh

./sbin/stop-all.sh

实验四

七、实验步骤

(一)安装 Hadoop-Eclipse-Plugin

进入本地文件系统的“下载”文件夹,单击右键,点在终端打开。

img

l 在终端中输入命令(或者直接在文件系统中将该jar包拷贝到/usr/local/eclipse/plugins/中)

sudo cp hadoop-eclipse-plugin-2.6.0.jar /usr/local/eclipse/plugins/

l 复制完成后 使用以下命令,查看该jar包是否复制成功。

img

l 在shell中运行以下命令重启 Eclipse

/usr/lib/eclipse/eclipse -clean

(二)在hadoop的HDFS文件系统中新建输入文件夹

1.启动hadoop

cd /usr/local/hadoop

./sbin/start-all.sh

2.在HDFS中创建用户目录

l 本实验环境的Hadoop为伪分布式,伪分布式读取的则是 HDFS 上的数据。要使用 HDFS,首先需要创建用户目录。(已存在该文件夹则跳过这步)

bin/hdfs dfs -mkdir -p /user/hadoop

l 接着将 etc/hadoop 中的文件作为输入文件复制到分布式文件系统中,即将 /usr/local/hadoop/etc/hadoop 复制到分布式文件系统中的 /user/hadoop/input 中。上一步已创建了用户目录 /user/hadoop ,因此命令中就可以使用相对目录如 input,其对应的绝对路径就是 /user/hadoop/input:

bin/hdfs dfs -put etc/hadoop/*.xml input

l 查看input中的文件

bin/hdfs dfs –ls /user/hadoop/input

img

l 程序统计的就是这些文件中的词频。

l 也可以自己创建文件拷贝到hdfs中进行统计。

(三) 配置 Hadoop-Eclipse-Plugin

1.启动Eclipse

l 启动 Eclipse 后就可以在左侧的Project Explorer中看到 DFS Locations

img

\2. 进一步配置插件

l 第一步,选择 Window 菜单下的 Preference。

img

l 此时会弹出一个窗体,窗体的左侧会多出 Hadoop Map/Reduce 选项,点击此选项,选择 Hadoop 的安装目录(如/usr/local/hadoop,Ubuntu不好选择目录,直接输入就行)。

img

l 第二步:切换 Map/Reduce 开发视图,选择 Window 菜单下选择 Open Perspective -> Other,弹出一个窗体,从中选择 Map/Reduce 选项即可进行切换。

img

l 第三步:建立与 Hadoop 集群的连接,点击 Eclipse软件右下角的 Map/Reduce Locations 面板,在面板中单击右键,选择 New Hadoop Location。

imgimg

l 在弹出来的 General 选项面板中,General 的设置要与 Hadoop 的配置一致。一般两个 Host 值是一样的,如果是伪分布式,填写 localhost 即可,另外我们使用的Hadoop伪分布式配置,设置 fs.defaultFS 为 hdfs://localhost:9000,则 DFS Master 的 Port 要改为 9000。Map/Reduce(V2) Master 的 Port 用默认的即可,Location Name 随意填写。

img

(四)在 Eclipse 中操作 HDFS 中的文件

l 配置好后,点击左侧 Project Explorer 中的 MapReduce Location (点击三角形展开)就能直接查看 HDFS 中的文件列表了,双击可以查看内容,右键点击可以上传、下载、删除 HDFS 中的文件,无需再通过繁琐的 hdfs dfs -ls 等命令进行操作了。

img

(五)在 Eclipse 中创建 MapReduce 项目

l 点击 File 菜单,选择 New -> Project…选择 Map/Reduce Project,点击 Next。

l 填写 Project name 为 WordCount 即可,点击 Finish 就创建好了项目。

img

l 右键点击刚创建的 WordCount 项目,选择 New -> Class

l 需要填写两个地方:在 Package 处填写 org.apache.hadoop.examples;在 Name 处填写 WordCount。

img

l 创建 Class 完成后,在 Project 的 src 中就能看到 WordCount.java 这个文件。将如下 WordCount 的代码复制到该文件中。

l 用linux浏览器打开网址复制WordCount代码http://dblab.xmu.edu.cn/blog/hadoop-build-project-using-eclipse/

(六)通过 Eclipse 运行 MapReduce

l 在运行 MapReduce 程序前,还需要将 /usr/local/hadoop/etc/hadoop 中将有修改过的配置文件(如伪分布式需要修改 core-site.xml 和 hdfs-site.xml,本镜像已完成修改),以及 log4j.properties 复制到 WordCount 项目下的 src 文件夹(~/workspace/WordCount/src)中。在shell中完成复制。

cp /usr/local/hadoop/etc/hadoop/core-site.xml ~/workspace/WordCount/src

cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml ~/workspace/WordCount/src

cp /usr/local/hadoop/etc/hadoop/log4j.properties ~/workspace/WordCount/src

img

l 复制完成后,务必右键点击 WordCount 选择 refresh 进行刷新(不会自动刷新,需要手动刷新),可以看到文件结构如下所示:

img

l 点击工具栏中的 Run 图标,或者右键点击 Project Explorer 中的 WordCount.java,选择 Run As -> Run on Hadoop,就可以运行 MapReduce 程序了。不过由于没有指定参数,运行时会提示 “Usage: wordcount “,需要通过Eclipse设定一下运行参数。

l 右键点击刚创建的 WordCount.java,选择 Run As -> Run Configurations,在此处可以设置运行时的相关参数(如果 Java Application 下面没有 WordCount,那么需要先双击 Java Application)。切换到 “Arguments” 栏,在 Program arguments 处填写 “input output” 就可以了。

img

l 设定参数后,再次运行程序,可以看到运行成功的提示。

img

l 可以在Shell中查看结果:

./bin/hdfs dfs –cat output/*

img

l 提示:如果提示错误“-Syntax error, parameterized types are only availble if source level is 1.5 or greater”。单击错误提示图标,在弹出的对话框中,在Change project compliance and JRE to 1.5 这行文字上双击,就可以让错误信息消失。


文章作者: Yuukyou
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Yuukyou !
评论
  目录