介绍
本文实现 hadoop3.x 伪分布式配置HDFS
伪分布式安装:用分布式的方式,安装到一台电脑上,适合配置低的电脑
官网文档:
https://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-common/SingleCluster.html
上传
将 hadoop-3.0.3.tar.gz 上传到 /program/
解压缩
cd /program/
tar -zxvf hadoop-3.0.3.tar.gz --no-same-owner
配置环境变量
编辑文件
vim /etc/profile.d/bigdata_env.sh
在末尾,使用 o 命令,添加下面内容:
# 配置 HADOOP_HOME
export HADOOP_HOME=/program/hadoop-3.0.3
export PATH=${HADOOP_HOME}/bin:$PATH
export PATH=${HADOOP_HOME}/sbin:$PATH
执行esc -> :wq
使立即生效
source /etc/profile
测试
hadoop
会显示 hadoop 命令的信息,表示配置成功
修改 hadoop-env.sh
hadoop-env.sh 配置了 hadoop 的环境
在 $HADOOP_HOME/etc/hadoop/hadoop-env.sh
设置 JAVA_HOME
必须 指定 java 绝对路径,否则 启动 NameNode 和 DataNode 会报错
使用 vim 编辑该文件:
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
找到 export JAVA_HOME ,如果该行前面有 # ,就去掉 #,改成
export JAVA_HOME=/program/jdk1.8.0_202
设置用户
在 hadoop3.x 需要设置 当前登录用户,才能执行命令,否则会报错
注意: 需要将下面 root 用户改成 当前登录用户
在文件的 最下面 添加下面配置:
export HDFS_DATANODE_USER=root
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
执行esc -> :wq,保存并退出
修改 core-site.xml 文件
vim /program/hadoop-3.0.3/etc/hadoop/core-site.xml
指定HDFS中NameNode的地址
增加下面内容:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:8020</value>
</property>
解释: NameNode 部署在 hadoop1 上,所以使用 hadoop1 的 8020 端口
设置HDFS存储文件的位置:
<property>
<name>hadoop.tmp.dir</name>
<value>/program/hadoop-3.0.3/data/tmp</value>
</property>
当上传文件到 HDFS 后,HDFS 中的文件保存在:
/devtools/hadoop-3.0.3/data/tmp/dfs/data/current/BP-生成的数字/current/finalized/subdir0/subdir0/
配置HDFS网页登录的静态用户
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
执行esc -> :wq,保存并退出
修改 hdfs-site.xml
vim /program/hadoop-3.0.3/etc/hadoop/hdfs-site.xml
指定HDFS副本的数量:
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
执行esc -> :wq,保存并退出
配置免密码ssh
必须配置,否则执行 start-dfs.sh 报错
测试是否可以免密码 ssh 登录
ssh hadoop1
如果提示需要输入密码,表示不能免密码登录,需要执行下面命令
设置密码ssh登录
执行下面命令
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
测试是否可以免密码 ssh 登录
ssh hadoop1
不需要输入密码,就能登录,表示成功,执行下面命令退出
exit
格式化NameNode
第一次启动时格式化,相当于新安装的硬盘,格式化后才能使用
注意: 以后就不要总格式化,相当于硬盘格式化,原有数据丢失
hdfs namenode -format
成功如下图:
启动 NameNode 和 DataNode
start-dfs.sh
执行结果如下:
红框处 hadoop1 就是主机名
可通过 hostname 命令查看主机名
jps查看是否启动成功
jps是jdk命令
jps
显示如下:
24294 NameNode
24472 DataNode
24698 SecondaryNameNode
表示启动成功
访问 NameNode
通过网址 http://linux的ip地址:9870 可以访问 hadoop 的 web 网页
在windows上做映射
不在 windows 上做映射,不能通过 web页面 上传文件、下载文件、预览文件
详见:hadoop3.x伪分布式部署:修改windows hosts文件
在windows上做映射后,可以访问下面网址访问:
端口说明:
- hadoop3.x 端口号是9870
- hadoop2.x 端口号是50070
停止 NameNode 和 DataNode
stop-dfs.sh

