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。