HDFS-Spark-Hudi环境的搭建及测试

  • Post author:
  • Post category:其他




HDFS-Spark-Hudi环境的搭建及测试

由于需要进行Hudi的详细选型,本文从0开始搭建一个Spark+Hudi的环境,并进行简单使用。



1. 前提假设

1)假设在Linux进行环境安装,操作系统选择Ubuntu 22.04 LTS版本。

2)Ubuntu的源配置清华源。

3)JDK安装完毕(当前是1.8版本,1.8.0_333)。



2. 配置免密登录(Hadoop脚本需要)



2.1 安装openssh服务

sudo apt-get install openssh-server
sudo service ssh restart



2.2 localhost免密登录

ssh-keygen -t rsa
ssh-copy-id -i id_rsa <your user name>@localhost

ssh localhost



3. Hadoop安装

Hadoop安装的是单节点伪分布式环境,版本选择和后继的Spark选择有关联。

例如:Hadoop 3.2.3

Hudi当前支持的是Spark3.2,对应的Spark也是3.2。



3.1 下载并解压

1)下载hadoop二进制包 https://hadoop.apache.org/releases.html

2)解压缩到自己方便的安装目录



3.2 Hadoop配置并运行 HDFS

1)添加环境变量 ~/.profile:

vi ~/.profile

export HADOOP_HOME=<YOUR_HADOOP_DECOMPRESSD_PATH>
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"

source ~/.profile

给$HADOOP_HOME/etc/hadoop/hadoop-env.sh添加两个环境变量设置:

export JAVA_HOME=<YOUR_JAVA_HOME_PATH>
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"

此处很奇怪,不知道为什么系统的JAVA_HOME没生效,在这个hadoop-env.sh中还要再设置一次,不然后面启动dfs的时候报错。

运行下hadoop version看下是否能执行

$ hadoop version
Hadoop 3.2.3
Source code repository https://github.com/apache/hadoop -r abe5358143720085498613d399be3bbf01e0f131
Compiled by ubuntu on 2022-03-20T01:18Z
Compiled with protoc 2.5.0
From source with checksum 39bb14faec14b3aa25388a6d7c345fe8
This command was run using /<your path>/hadoop-3.2.3/share/hadoop/common/hadoop-common-3.2.3.jar

2)创建几个hadoop存储文件的本地目录:

$ tree dfs
dfs
├── data
├── name
└── temp

3)修改配置文件

$HADOOP_HOME/etc/hadoop/core-site.xml

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>file:/opt/dfs/temp</value>      <---- 你自己的临时文件目录
    <description>Abase for other temporary directories.</description>
  </property>
</configuration>

$HADOOP_HOME/etc/hadoop/hdfs-site.xml

<configuration>
  <!--指定hdfs中namenode的存储位置-->
  <property>
    <name>dfs.namenode.name.dir</name> 
    <value>/opt/dfs/name</value>         <---- 你自己的HDFS本地Namenode存储目录
  </property>
  <!--指定hdfs中datanode的存储位置-->
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/opt/dfs/data</value>         <---- 你自己的HDFS本地数据存储目录
  </property>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>
</configuration>

4)格式化namenode

hdfs namenode -format

$ tree
.
├── data
├── name
│   └── current
│       ├── fsimage_0000000000000000000
│       ├── fsimage_0000000000000000000.md5
│       ├── seen_txid
│       └── VERSION
└── temp

4 directories, 4 files

5)启动Hadoop

start-all.sh

$ jps
13392 Jps
12363 NameNode
12729 SecondaryNameNode
12526 DataNode
12931 ResourceManager
13077 NodeManager

http://localhost:9870

就可以看到HDFS的管理页面。



4. Hive安装

因为Spark SQL需要使用Hive Meta Store(HMS),需要安装Hive。



版权声明:本文为happyredstar原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。