IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> HDFS单机部署 -> 正文阅读

[大数据]HDFS单机部署

一、概述

??分布式文件系统是大型项目中不可缺少的模块,主要可以解决两类问题。一是服务分布式部署访问文件,二是大文件的存储。
??HDFS是Hadoop两大核心(HDFS、MapReduce)之一,旨在解决大数据(文件)的存储问题。HDFS的设计思路是分块(Block)存储大文件,由Java编写。

二、部署

??HDFS通常是集群方式部署。因其本身有文件管理的web页面,所以本人在CentOS上部署一个单点系统当网络文件传输管理器……以下是部署步骤。

  1. 安装配置JDK
  2. 下载安装Hadoop
    1. cd /usr/local
    2. wget https://archive.apache.org/dist/hadoop/core/hadoop-3.3.1/hadoop-3.3.1.tar.gz
    3. tar -zxvf hadoop-3.3.1.tar.gz
  3. 配置环境变量
    1. vi /etc/profile
        export HADOOP_HOME=/usr/local/hadoop-3.3.1
        export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH
    
    1. source /etc/profile
  4. 配置ssh免密登录
    1. ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    3. chmod 0600 ~/.ssh/authorized_keys
  5. 配置HDFS配置文件
    ??因未使用到MapReduce模块,仅配置HDFS的配置文件即可。配置文件在/usr/local/hadoop-3.3.1/etc/hadoop目录下。
    1. hadoop-env.sh
    	export JAVA_HOME=/usr/local/java11
    
    	export HADOOP_SSH_OPTS="-p ssh端口"
    
    1. core-site.xml
         <configuration>
     	   <property>
     	   <!--DataNode将发送心跳到NameNode的端口-->
     	    <name>fs.defaultFS</name>
     	    <value>hdfs://localhost:9000</value>
     	  </property>
     	  <!--临时文件存储目录,没有则新建-->
     	  <property>
     	    <name>hadoop.tmp.dir</name>
     	    <value>/usr/local/hadoop-3.3.1/tmp</value>
     	  </property>
        </configuration>
    
    1. hdfs-site.xml
        <configuration>
          <!--单点,配置备份为1-->
          <property>
     	    <name>dfs.replication</name>
     	    <value>1</value>
     	  </property>
     	  <!--分块大小-->
     	  <property>
     	    <name>dfs.blocksize</name>
     	    <value>698351616</value>
     	  </property>
     	  <!--NameNode存储目录,没有则新建-->
     	  <property>
     	    <name>dfs.name.dir</name>
     	    <value>/usr/local/hadoop-3.3.1/hdfs/name</value>
     	  </property>
     	  <!--DateNode存储目录,没有则新建-->
     	  <property>
     	    <name>dfs.data.dir</name>
     	    <value>/usr/local/hadoop-3.3.1/hdfs/data</value>
     	  </property>
         </configuration>
    
  6. 配置启动用户$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
    

三、启动

??部署完成后即可启动,确保使用的端口都以开放。

  1. 启动前先格式化HDFS
    /usr/local/hadoop-3.3.1/bin/hdfs namenode -format
  2. 启动
    /usr/local/hadoop-3.3.1/sbin/start-dfs.sh
  3. 停止
    /usr/local/hadoop-3.3.1/sbin/stop-dfs.sh
  4. 查看进程是否启动
    jps
  5. 查看防火墙状态
    firewall-cmd --state
  6. 关闭(X)防火墙
    systemctl stop firewalld.service
  7. 查看端口
    firewall-cmd --zone=public --list-ports
  8. 查看监听的端口
    netstat -lnpt
  9. 开放/关闭端口
    firewall-cmd --zone=public --add-port=6666/tcp --permanent
    firewall-cmd --zone=public --remove-port=6666/tcp --permanent
    firewall-cmd --reload # 配置立即生效

四、配置Web-UI用户认证

??启动成功后,可通过web管理页面http://IP:9870/查看HDFS的使用情况,也可管理文件。
??管理页面默认无密码,进入页面的人员都可操作,我们可以通过配置NameNode节点的jetty进行用户认证。

  1. cd $HADOOP_HOME/share/hadoop/hdfs/webapps/hdfs/WEB-INF
  2. web.xml
  	<?xml version="1.0" encoding="UTF-8"?>
  	<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">
  	    <security-constraint>
  	        <web-resource-collection>
  	            <web-resource-name>Protected</web-resource-name>
  	            <url-pattern>/*</url-pattern>
  	        </web-resource-collection>
  	        <auth-constraint>
  	            <role-name>root</role-name>
  	        </auth-constraint>
  	    </security-constraint>
  	    <login-config>
  	        <auth-method>BASIC</auth-method>
  	        <realm-name>hdfsRealm</realm-name>
  	    </login-config>
  	</web-app>
  1. 同路径jetty-web.xml,没有则新增
  	<?xml version="1.0"?>
  	<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
  	<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  	  <Get name="securityHandler">  
  	    <Set name="loginService">  
  	      <New class="org.eclipse.jetty.security.HashLoginService">  
  	        <Set name="name">hdfsRealm</Set>
  	        <Set name="config">
  	          <SystemProperty name="hadoop.home.dir"/>/etc/hadoop/realm.properties
  	        </Set>
  	      </New>  
  	    </Set>  
  	  </Get>
  	</Configure>
  1. 在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  
		#  <username>: <password>[,<rolename> ...]  
		#  
		#plain: plain,user
		user: password,root
  1. 再次访问WebUI需通过配置的用户名密码登录

五、问题

  1. 上传文件遇到权限问题Permission denied: user=dr.who, access=READ_EXECUTE, inode="/":root:supergroup:drwx------

hadoop fs -chmod -R 777 /

  1. 上传文件遇到Couldn't upload the file

通过F12查看无法上传的原因,对症解决

  1. 其他问题

查看日志排查问题/usr/local/hadoop-3.3.1/logs

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 12:00:29  更:2021-09-01 12:00:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:20:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码