欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

eclipse远程连接hadoop_Hadoop之HDFS基本操作实验

发布时间:2025/4/16 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 eclipse远程连接hadoop_Hadoop之HDFS基本操作实验 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
点击上方蓝色字关注我们!

Hadoop是一款开源的大数据通用处理平台,其提供了分布式存储和分布式离线计算。Hadoop由HDFS、YARN、MapReduce组成。

Hadoop分布式文件系统(HDFS)是一种分布式文件系统(Distributed File System)。HDFS具有高度容错性,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

HDFS其实是将一个大文件分成若干块保存在不同服务器的多个节点中。通过联网让用户感觉像是在本地一样查看文件,为了降低文件丢失造成的错误,HDFS会为每个小文件复制多个副本(默认为3个),以此来实现多机器上的多用户分享文件和存储空间。

HDFS体系结构

HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的多个DataNode负责管理存储的数据。

块大小:Hadoop2版本里一个块默认为128M,小文件也占用一个块,小文件越多,块越多。因此,HDFS中不适合存储小文件。

副本个数:保存多个副本(默认3个),提供容错机制,一个副本丢失或宕机,自动恢复。

01

实验目的

熟悉HDFS基本命令行操作

使用Java 接口,通过Java程序读取HDFS中的文件

02

实验环境

云服务器1台:(华为云、阿里云、腾讯云等等均可)

操作系统:CentOS7.4 64位

系统配置:2核4G以上

感谢华为云提供云服务器支持!

03

实验步骤

》》实验资源

操作系统:CentOS 7

JDK:JDK8

Hadoop:2.8.5

Github地址:https://github.com/my-ss-course/BigData

工具包地址:链接: https://pan.baidu.com/s/1nOvFQGj12N3ODNilOYMYjg 密码: r8qo

已经按照前面的教程搭建好3个节点的Hadoop伪分布式集群

1

登录远程云服务器

使用本地客户端连接远程云服务器

2

启动Hadoop集群

如已启动hadoop容器,请忽略本步骤

./start_container.sh

进入hadoop-node1节点的容器

docker exec -it hadoop-node1 /bin/bash

3

通过命令行方式操作HDFS文件系统

01命令行接口格式格式1:hadoop fs -命令 路径

格式2:hdfs dfs -命令 路径02ls命令hdfs dfs -ls /

03put命令

将本地文件上传到HDFS中。

hdfs dfs -put /usr/local/hadoop-2.8.5/NOTICE.txt /input/

04get命令

将HDFS中文件下载到本地

hdfs dfs -get /input/README.txt ./
hdfs dfs -get /input/README.txt README2.txt
hdfs dfs -get /input/README.txt

05rm命令

删除文件

hdfs dfs -rm /input/README.txt

删除目录

hdfs dfs -rm -r /output

06mkdir命令

创建目录

hdfs dfs -mkdir /output

创建多级目录,使用-p参数

hdfs dfs -mkdir -p /output/abc/123

07cp命令hdfs dfs -cp /input/NOTICE.txt /input/NOTICE2.txt

08mv命令hdfs dfs -mv /input/NOTICE.txt /input/NOTICE3.txt

09cat命令hdfs dfs -cat /input/NOTICE3.txt

4

使用Java API操作HDFS文件系统中数据

01

新建IntelliJ IDEA下的maven项目

  • 点击File->New->Project,在弹出的对话框中选择Maven

  • JDK选择相应的版本,点击Next

  • 填写Maven的GroupId和ArtifactId,可以随便填写

  • 项目名可填写HDFSTest

  • 编辑pom.xml添加hadoop依赖

<dependencies>
        <dependency>
            <groupId>org.apache.hadoopgroupId>
            <artifactId>hadoop-hdfsartifactId>
            <version>2.8.5version>
        dependency>
        <dependency>
            <groupId>org.apache.hadoopgroupId>
            <artifactId>hadoop-clientartifactId>
            <version>2.8.5version>
        dependency>
    dependencies>

02

编写代码

新建一个class,增加如下实验代码

public static void main(String[] args) throws IOException {
        System.out.println("hello world");
        Configuration conf=new Configuration();
        conf.set("fs.defaultFS","hdfs://你的云服务器的IP:19000或hadoop-node1节点的IP:9000");
        FileSystem hdfs =FileSystem.get(conf);
        boolean is_success = hdfs.mkdirs(new Path("/helloByJava"));
        if(is_success){
            System.out.println("success");
        }else{
            System.out.println("failure");
        }
        hdfs.close();
}

注意要把安全组以及防火墙中的端口打开。

直接运行程序的结果如下

警告先忽略,因为没有配置log4j

可以看到能够在HDFS中成功创建了一个目录。

这这这也太不安全了吧???

可以直接访问我的HDFS

03

打包发布

1、pom.xml文件中增加如下代码,用于编译打包

<build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-pluginartifactId>
                <version>2.3.2version>
                <configuration>
                    <source>1.8source>
                    <target>1.8target>
                configuration>
            plugin>
            <plugin>
                <artifactId>maven-assembly-plugin artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependenciesdescriptorRef>
                    descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.myhadoop.HelloWorldmainClass>
                        manifest>
                    archive>
                configuration>
                <executions>
                    <execution>
                        <id>make-assemblyid>
                        <phase>packagephase>
                        <goals>
                            <goal>singlegoal>
                        goals>
                    execution>
                executions>
            plugin>
        plugins>
build>

注意:代码中mainClass需要根据打包的具体类修改

2、在IDEA右侧栏中选择Maven Projects,打开Lifecycle文件夹,先点击compile再点击package,等待jar打包成功。

3、jar包打完之后打开左侧target文件夹,发现有两个jar包,把无依赖的jar包复制到hadoop-node1节点内

拷贝到hadoop-node1节点

4、在hadoop-node1节点下执行命令

hadoop jar   jar包名  classname

hadoop jar hadoop-1.0.jar com.myhadoop.HelloWorld

   

END

每天进步一点点

让我知道你在看

总结

以上是生活随笔为你收集整理的eclipse远程连接hadoop_Hadoop之HDFS基本操作实验的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。