分布式文件系统是大型项目中不可缺少的模块,主要可以解决两类问题。一是服务分布式部署访问文件,二是大文件的存储。
HDFS是Hadoop两大核心(HDFS、MapReduce)之一,旨在解决大数据(文件)的存储问题。HDFS的设计思路是分块(Block)存储大文件,由Java编写。
HDFS通常是集群方式部署。因其本身有文件管理的web页面,所以本人在CentOS上部署一个单点系统当网络文件传输管理器……以下是部署步骤。
- 安装配置JDK
- 略
- 下载安装Hadoop
- cd /usr/local
- wget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.1/hadoop-3.3.1.tar.gz
- tar -zxvf hadoop-3.3.1.tar.gz
- 配置环境变量
- vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop-3.3.1 export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH
- source /etc/profile
- 配置ssh免密登录
- ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
- cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- chmod 0600 ~/.ssh/authorized_keys
- 配置HDFS配置文件
因未使用到MapReduce模块,仅配置HDFS的配置文件即可。配置文件在/usr/local/hadoop-3.3.1/etc/hadoop目录下。- hadoop-env.sh
export JAVA_HOME=/usr/local/java11
export HADOOP_SSH_OPTS="-p ssh端口"
- core-site.xml
fs.defaultFS hdfs://localhost:9000 hadoop.tmp.dir /usr/local/hadoop-3.3.1/tmp - hdfs-site.xml
dfs.replication 1 dfs.blocksize 698351616 dfs.name.dir /usr/local/hadoop-3.3.1/hdfs/name dfs.data.dir /usr/local/hadoop-3.3.1/hdfs/data - 配置启动用户$HADOOP_HOME/sbin/start-dfs.sh和sbin/stop-dfs.sh
HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root
部署完成后即可启动,确保使用的端口都以开放。
- 启动前先格式化HDFS
/usr/local/hadoop-3.3.1/bin/hdfs namenode -format - 启动
/usr/local/hadoop-3.3.1/sbin/start-dfs.sh - 停止
/usr/local/hadoop-3.3.1/sbin/stop-dfs.sh - 查看进程是否启动
jps - 查看防火墙状态
firewall-cmd --state - 关闭(X)防火墙
systemctl stop firewalld.service - 查看端口
firewall-cmd --zone=public --list-ports - 查看监听的端口
netstat -lnpt - 开放/关闭端口
firewall-cmd --zone=public --add-port=6666/tcp --permanent
firewall-cmd --zone=public --remove-port=6666/tcp --permanent
firewall-cmd --reload # 配置立即生效
启动成功后,可通过web管理页面http://IP:9870/查看HDFS的使用情况,也可管理文件。
管理页面默认无密码,进入页面的人员都可 *** 作,我们可以通过配置NameNode节点的jetty进行用户认证。
- cd $HADOOP_HOME/share/hadoop/hdfs/webapps/hdfs/WEB-INF
- web.xml
Protected /* root BASIC hdfsRealm
- 同路径jetty-web.xml,没有则新增
hdfsRealm /etc/hadoop/realm.properties
- 在jetty-web中配置的路径下新增用户名密码的配置
vi /usr/local/hadoop-3.3.1/etc/hadoop/realm.properties
# # This file defines users passwords and roles for a HashUserRealm # # The format is #: [, ...] # #plain: plain,user user: password,root
- 再次访问WebUI需通过配置的用户名密码登录
- 上传文件遇到权限问题Permission denied: user=dr.who, access=READ_EXECUTE, inode="/":root:supergroup:drwx------
hadoop fs -chmod -R 777 /
- 上传文件遇到Couldn't upload the file
通过F12查看无法上传的原因,对症解决
- 其他问题
查看日志排查问题/usr/local/hadoop-3.3.1/logs
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)