环境:Mac
Hadoop版本:Apache Hadoop 3.3.4
由于hadoop依赖java环境,所以需要事先安装好java。
Hadoop下载
进入官网进行下载Apache Hadoop
下载后解压到自己的规划的目录。
环境文件配置
Hadoop相关配置文件都在目录的../hadoop-3.3.4/etc/hadoop
目录下。
hadoop-env.sh
注意此处一定要jdk1.8的版本,否则后续WebUI操作时会失败。
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home
core-site.xml
<configuration>
<!-- 配置hdfs的访问地址 -->
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
HDFS启动
Hadoop相关服务的启动脚本在../hadoop-3.3.4/sbin
目录下,该目录下有hdfs、yarn等相关服务的启动脚本,hdfs的启停脚本分别为start-dfs.sh
和stop-dfs.sh
。接下来先执行start-dfs.sh
来启动hdfs。
此时执行后,会出现如下错误:
yuxiao@yuxiaoMBP sbin % ./start-dfs.sh
Starting namenodes on [localhost]
localhost: yuxiao@localhost: Permission denied (publickey,password,keyboard-interactive).
Starting datanodes
localhost: yuxiao@localhost: Permission denied (publickey,password,keyboard-interactive).
Starting secondary namenodes [yuxiaoMBP]
yuxiaoMBP: ssh: Could not resolve hostname yuxiaombp: nodename nor servname provided, or not known
2023-05-07 19:58:52,690 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
这是由于没有权限访问造成的,需要生成一个秘钥文件,如果有直接使用即可,秘钥文件生成后默认在在当前用户的.ssh
目录下,名为:id_rsa.pub
,此时通过cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
复制一个授权的key,这样Hadoop在启动的时候在启动用户的目录下就可以找到该文件,以便授权。
id_rsa.pub文件的生成方法:
ssh-keygen -t rsa
一路回车即可
再次执行start-dfs.sh
脚本启动:
启动后,可已通过jps命令查看hadoop hdfs的相关进程,NameNode、DataNode、SecondaryNameNode.
Hadoop命令操作文件
进入/hadoop-3.3.4/bin目录
查看根目录文件
文件相关的推荐使用hdfs命令
执行hadoop fs -ls /
或hdfs dfs -ls /
,该命令可以查看根目录,此时返回为空,上传文件后可以再次查看
上传文件
hdfs dfs -put hdfs.cmd /
,将当前bin目录下的hdfs.cmd文件上传到根目录,再次执行文件查看命令hdfs dfs -ls /
查看是否上传成功
此时可以看到文件已经上传成功。
下载文件
下载文件的命令为get,hdfs dfs -get /hdfs.cmd hdfs.cmd.bak
,下载上传的hdfs.cmd到当前bin目录,并修改名称为hdfs.cmd.bak文件
文件下载成功并修改文件名称。
创建目录
hdfs dfs -mkdir /data
,创建一个data目录
hdfs dfs -mkdir -p /data/wordcount/wc1
,该名称多了一个-p
参数,表示创建路径存在多级但中间的一些路径不存在时也可以创建,没有-p
参数时,会返回一个错误。
HDFS WebUI
在启动hdfs后,已经启动了web服务,通过http://localhost:9870
进行访问,如下图所示
可以在web页面对文件进行上一节相关的文件操作,如下
在浏览文件系统的页面,我们可以看到在上一节中我们上传的文件和创建的文件夹,其他操作如下图所示: