#yyds干货盘点#大数据基础HDFS练习

Posted 俺想吃蜂蜜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点#大数据基础HDFS练习相关的知识,希望对你有一定的参考价值。

目的

  1. 理解HDFS在Hadoop体系结构中的角色;

  2. 熟练使用HDFS操作常用的Shell命令;

  3. 熟悉HDFS操作常用的Java API。

平台

操作系统:Linux

Hadoop版本:2.6.0或以上版本

JDK版本:1.6或以上版本

Java IDE:Eclipse

内容和要求

HDFS理解

含义:

HDFS是hadoop项目的核心子项目,是分布式计算中数据存储管理的基础。是基于流数据模式访问和处理超大文件的需求而开发的, 可以运行于廉价的商用服务器上。

它所具有的高容错、 高可靠性、 高可扩展性、 高获得性、 高吞吐率等特征为海量数据提供了不怕故障的存储, 为超大数据集的应用处理带来了很多便利。

HDFS是开源的,存储着Hadoop应用将要处理的数据,类似于普通的Unix和linux文件系统,不同的是它是实现了google的GFS文件系统的思想,是适用于大规模分布式数据处理相关应用的、可扩展的分布式文件系统。

HDFS的关键元素:

Block:将一个文件进行分块,通常是64M,可配置。若文件大小不到64MB ,则单独存成一个block。Block大小和副本数通过Client端上传文件时设置,文件上传成功后副本数可以变更,Block Size不可变更。

NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了。在Hadoop2.*开始支持activity-standy模式----如果主NameNode失效,启动备用主机运行NameNode。

DataNode:分布在廉价的计算机上,用于存储Block块文件。

HDFS编程练习

1. 利用 Hadoop 提供的 Shell 命令完成

向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件;


 
从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;

将HDFS中指定文件的内容输出到终端中;

显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息;

给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息;

利用JAVA API 编程实现

编写一个Java程序,判断HDFS上是否存在某个文件?

代码如下:

import org.apache.hadoop.conf.Configuration;

    import org.apache.hadoop.fs.FileSystem;

    import org.apache.hadoop.fs.Path;

    public class a1

        public static void main(String[] args)

            try

                String fileName = "/user/hadoop/123.txt";

                Configuration conf = new Configuration();

                conf.set("fs.defaultFS", "hdfs://localhost:9000");

                conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");

                FileSystem fs = FileSystem.get(conf);

                if(fs.exists(new Path(fileName)))

                    System.out.println(fileName + " 文件存在");

                else

                    System.out.println(fileName + " 文件不存在");

                

            catch (Exception e)

                e.printStackTrace();

            

        

结果如下:

在其中我遇到了以下错误:

Hadoop启动HDFS进程的时候报错,提示权限不够

错误:


错误原因:

因为切换了用户无法正常使用

解决办法:

复制导入公钥就可以了,SSH链接需要使用公钥认证:

切换到ssh目录:cd ~/.ssh/

再次启动HDFS就可以了。

以上是关于#yyds干货盘点#大数据基础HDFS练习的主要内容,如果未能解决你的问题,请参考以下文章

SQL编程题练习题(基础)#yyds干货盘点#

#yyds干货盘点#HBase 基础及核心架构解析

#yyds干货盘点# LeetCode 腾讯精选练习 50 题:子集

#yyds干货盘点#带大家认识Golang中的切片数据类型

#yyds干货盘点# LeetCode 腾讯精选练习 50 题:排序链表

#yyds干货盘点# LeetCode 腾讯精选练习 50 题:二叉树的最近公共祖先