美文网首页
HDFS 单节点环境搭建

HDFS 单节点环境搭建

作者: wayyyy | 来源:发表于2022-10-31 00:16 被阅读0次

HDFS 作为hadoop 生态的一部分,部署HDFS即需要部署Hadoop。

这里由于节点数量有限,所以我们选择单节点(伪分布式部署)。

部署HDFS3.2.2
  • 安装 jdk1.8.0_201

    1. 官网下载 jdk-8u201-linux-x64.tar.gz。将其放在 /usr/local/java,然后执行tar -zxvf jdk-8u201-linux-x64.tar.gz解压。
    2. 配置环境变量,编辑 /etc/profile 文件,在后面加入:
      export JAVA_HOME=/usr/local/java/jdk1.8.0_201
      export PATH=$PATH:$JAVA_HOME/bin
      export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      
      执行 source /etc/profile 使修改生效。
    3. 输入如下命令验证
      # java
      # java -version
      # javac 
      
  • 配置ssh 免密登录
    如果已经生成过公钥,则执行:

    # cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    # chmod 0600 ~/.ssh/authorized_keys
    

    没有的话,则先执行:

    # ssh-keygen -t rsa
    

    生成公钥。

  • 安装hadoop
    https://archive.apache.org/dist/hadoop/core/hadoop-3.2.2/hadoop-3.2.2.tar.gz 下载 hadoop,放置在 /usr/local/ 下面,使用tar -zxvf hadoop-3.2.2.tar.gz 解压。
    编辑/etc/profile,加入:

    export HADOOP_HOME=/usr/local/hadoop-3.2.2
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    

    执行 source /etc/profile 使修改生效。
    输入如下命令验证:

    # hadoop version
    
  • 修改hdfs配置文件
    因未使用到 MapReduce 模块,仅配置HDFS的配置文件即可。配置文件在/usr/local/hadoop-3.2.2/etc/hadoop目录下。

    1. hadoop-env.sh
    export JAVA_HOME=/usr/local/java/jdk1.8.0_201
    
    1. core-site.xml
    <property>
      <!--DataNode将发送心跳到NameNode的端口-->
      <name>fs.defaultFS</name>
      <value>hdfs://192.168.48.141:9000</value>
    </property>
      <!--临时文件存储目录,没有则新建-->
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/tmp</value>
    </property>
    

    这里注意改成自己的ip。

    1. hdfs-site.xml
    <!--单点,配置备份为1-->
    <property>
      <name>dfs.replication</name>
      <value>1</value>
    </property>
    <!--分块大小-->
    <property>
      <name>dfs.blocksize</name>
      <value>698351616</value>
    </property>
    <!--NameNode存储目录,没有则新建-->
    <property>
      <name>dfs.name.dir</name>
      <value>/usr/local/hadoop-3.2.2/hdfs/name</value>
    </property>
    <!--DateNode存储目录,没有则新建-->
    <property>
      <name>dfs.data.dir</name>
      <value>/usr/local/hadoop-3.2.2/hdfs/data</value>
    </property>
    
    1. /usr/local/hadoop-3.2.2/sbin/start-dfs.sh 和 /usr/local/hadoop-3.2.2/sbin/stop-dfs.sh 开头加入:
    HDFS_DATANODE_USER=root
    HADOOP_SECURE_DN_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root
    
    1. (这一步可不做)在 /usr/local/hadoop-3.2.2/sbin/start-yarn.sh 和 /usr/local/hadoop-3.2.2/sbin/stop-yarn.sh 开头加入:
    YARN_RESOURCEMANAGER_USER=root                                            
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root
    
  • 启动
    启动前先格式化HDFS

    # /usr/local/hadoop-3.2.2/bin/hdfs namenode -format
    

    启动

    # /usr/local/hadoop-3.2.2/sbin/start-dfs.sh
    

    也可以按照如下方式启动单个进程:

    # /usr/local/hadoop-3.2.2/sbin/hadoop-daemon.sh start namenode
    # /usr/local/hadoop-3.2.2/sbin/hadoop-daemon.sh start datanode
    # /usr/local/hadoop-3.2.2/sbin/hadoop-daemon.sh start secondarynamenode
    

    停止

    # /usr/local/hadoop-3.2.2/sbin/stop-dfs.sh
    

    也可以按照如下方式停止单个进程:

    # /usr/local/hadoop-3.2.2/sbin/hadoop-daemon.sh stop namenode
    # /usr/local/hadoop-3.2.2/sbin/hadoop-daemon.sh stop datanode
    # /usr/local/hadoop-3.2.2/sbin/hadoop-daemon.sh stop secondarynamenode
    

    查看进程是否启动

    # jps
    
    image.png

    其他注意关闭防火墙,有问题可以查看日志:/usr/local/hadoop-3.2.2/logs

    启动成功后,可通过web管理页面http://IP:9870/(比如我这里是:http://192.168.48.141:9870/)查看HDFS的使用情况,也可管理文件。管理页面默认无密码,进入页面的人员都可操作。

使用java-api 操作hdfs
  1. 首先需要配置 window 的 hadoop 环境,过程很多,可以参考:https://github.com/autopear/Intellij-Hadoop
  1. 建立工程,代码如下:
package edu.ucr.cs.merlin;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.log4j.BasicConfigurator;
import org.junit.Before;
import org.junit.Test;


public class HDFSDemo {

    FileSystem fs = null;

    @Before
    public void init() throws Exception {
        fs = FileSystem.get(new URI("hdfs://192.168.48.140:9000"), new Configuration(), "root");
    }

    @Test
    public void testUpload() throws Exception {
        InputStream in = new FileInputStream("/root/install.log");
        OutputStream out = fs.create(new Path("/log123.log"));
        IOUtils.copyBytes(in, out, 1024, true);
    }

    @Test
    public void testMkdir() throws IllegalArgumentException, IOException {
        boolean flag = fs.mkdirs(new Path("/a/aa"));
        System.out.println(flag);
    }

    @Test
    public void testDel() throws IllegalArgumentException, IOException {
        boolean flag = fs.delete(new Path("/a"), true);
        System.out.println(flag);
    }

    public static void main(String[] args) throws Exception {
        BasicConfigurator.configure();

        FileSystem fs = FileSystem.get(new URI("hdfs://192.168.48.140:9000"), new Configuration(), "root");
//        InputStream in = fs.open(new Path("/jdk"));
//        OutputStream out = new FileOutputStream("/home/jdk1.7.tar.gz");
//        IOUtils.copyBytes(in, out, 4096, true);
        FSDataOutputStream fsout = fs.create(new Path("/test2.txt"));
        fsout.write("hello world".getBytes());
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>wordcount</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <hadoop.version>3.2.2</hadoop.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <repositories>
        <repository>
            <id>apache</id>
            <url>http://maven.apache.org</url>
        </repository>
    </repositories>

</project>  

log4j.properties 如下:

log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
hdfs 常用命令

显示当前目录结构

hadoop fs -ls  <path>

# 递归显示当前目录结构
hadoop fs -ls  -R  <path>

创建目录

hadoop fs -mkdir  <path> 

# 递归创建目录
hadoop fs -mkdir -p  <path>

删除操作

# 删除文件
hadoop fs -rm  <path>

# 递归删除目录和文件
hadoop fs -rm -R  <path>

本地加载文件到HDFS

# 二选一执行即可
hadoop fs -put  [localsrc] [dst] 
hadoop fs - copyFromLocal [localsrc] [dst] 

参考资料
1、https://blog.csdn.net/y5201h/article/details/120024999
2、https://blog.csdn.net/S1124654/article/details/125522613
3、https://blog.csdn.net/S1124654/article/details/125522613

相关文章

  • HDFS 单节点环境搭建

    HDFS 作为hadoop 生态的一部分,部署HDFS即需要部署Hadoop。 这里由于节点数量有限,所以我们选择...

  • Hadoop总结

    环境搭建 单节点高可用联邦 配置文件 hdfs-site.xmlhadoop-env.sh (配置java环境变量...

  • kubeadm搭建高可用集群

    使用 kubeadm 搭建单节点集群已经介绍过了,关于如何初始化环境,安装依赖组件请参考kubeadm搭建单节点集...

  • 大数据平台hadoop搭建(单机、集群、基于zookeeper高

    hadoop环境搭建,初始如果只有一台可用server虚拟机可以只使用单机版,单台搭建hdfs环境。生产环境式hd...

  • 2.1、Linux下Kafka环境搭建及基本使用

    一、kafka单节点单broker环境搭建 系统环境:centos 64位 mini 虚拟机:Virtual Bo...

  • hadoop学习大纲

    Hadoop集群环境搭建 Hadoop集群环境搭建 HDFS 图说HDFS基本原理hadoop的shell命令操作...

  • Hadoop课程大纲

    Hadoop集群环境搭建 Hadoop集群环境搭建 HDFS 图说HDFS基本原理hadoop的shell命令操作...

  • Hadoop课程大纲

    Hadoop集群环境搭建 Hadoop集群环境搭建 HDFS 图说HDFS基本原理hadoop的shell命令操作...

  • Hadoop 课程大纲

    Hadoop集群环境搭建 Hadoop集群环境搭建 HDFS 图说HDFS基本原理hadoop的shell命令操作...

  • 搭建单节点kafka环境

    前言 因为公司业务需要,也因为自身知识体系需要。计划研究一下kafka。kafka和我以往使用的rabbitmq队...

网友评论

      本文标题:HDFS 单节点环境搭建

      本文链接:https://www.haomeiwen.com/subject/wxxktdtx.html