HDFS IO序列化与反序列化

实验环境
Linux Ubuntu 16.04
前提条件:
1)Java 运行环境部署完成
2)Hadoop 的单点部署完成
 

实验内容
在上述前提条件下,学习HDFS IO序列化与反序列化的实验。

实验步骤

1.点击桌面的"命令行终端",打开新的命令行窗口

2.启动HDFS

启动HDFS,在命令行窗口输入下面的命令:

/apps/hadoop/sbin/start-dfs.sh

运行后显示如下,根据日志显示,分别启动了NameNode、DataNode、Secondary NameNode:

dolphin@tools:~$ /apps/hadoop/sbin/start-dfs.sh 
Starting namenodes on [localhost]
localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Starting datanodes
Starting secondary namenodes [tools.hadoop.fs.init]
tools.hadoop.fs.init: Warning: Permanently added 'tools.hadoop.fs.init,172.22.0.2' (ECDSA) to the list of known hosts.

3.查看HDFS相关进程

在命令行窗口输入下面的命令:

jps

运行后显示如下,表明NameNode、DataNode、Secondary NameNode已经成功启动

dolphin@tools:~$ jps
484 DataNode
663 SecondaryNameNode
375 NameNode
861 Jps

4.启动Eclipse

点击桌面的Eclipse图标,打开Eclipse

运行后,会弹出Workspace Launcher对话框,此时workspace我们默认就行,点击OK

5.创建项目

进入Eclipse后,会默认进入Welcome标签页,点击标签的叉号,退出Welcome标签。

点击左上角工具栏File,点击New下面的Java Project。

此时弹出了New Java Project对话框,我们填写Project Name为 Example,再点击Finish后,项目创建完成。

6.创建Java类

如下图所示,找到左上角Example项目下src目录后,右击,选择New,在点击Class。

此时会弹出New Java Class对话框,如下图,填写Package为com.dolphin,填写Name为Example,再点击右下角Finish。此时Example类已经创建完成。

7.导入Hadoop Jar包

右击左上角Example项目,找到Build Path,点击下面的Configure Build Path…

点击后会弹出Properties for Example对话框,如下图所示,点击Libraries后,再点击Add External JARs… 此时弹出JAR Selection对话框,找到根目录下/apps/hadoop/share/hadoop/common目录,选中hadoop-common-3.0.0.jar后,再点击OK

再次点击Add External JARs…,此时弹出JAR Selection对话框,找到根目录下/apps/hadoop/share/hadoop/common/lib目录,按住Ctrl + A,选中该目录下所有jar包后,点击OK。

再点击OK,此时Jar包已经导入完成。

8.编写代码

右击桌面的Example.txt文件,使用编辑器打开,按住Ctrl + A,再按住Ctrl + C复制全部内容后,回到Eclipse,编辑Example.java文件,按住Ctrl + A,再按住Ctrl + V,粘贴代码,再按住Ctrl + S保存文件。

9.运行代码

点击上方绿色的Run Example按钮,开始运行代码。运行后Eclipse控制台显示如下:

0
0
0
-93
[B@73a8dfcc
163
163

10.运行内容

首先理解序列化与反序列化的概念:
序列化:将内存中的对象转换成字节序列用于存储或者网络传输。
反序列化:把从磁盘或者网络拿到的字节序列还原对象,提供给程序使用Hadoop为什么使用自己的序列化:Jdk本身提供了serializable接口实现序列化操作,但是它序列化的结果太笨重,不适用于在集群网络中有大量对象传输的场景。hadoop提供了Writable接口实现序列化。

代码中,是先对一个Int类型的变量进行序列化,打印序列化后的二进制数据。 再反序列化原来的数据,最后打印出来。

此外,用户可以自定义序列化自己的对象,只要让这个类继承Writable接口即可。

至此,本实验结束啦。开始下一个实验吧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值