Hadoop学习笔记(HDP)-Part.12 安装HDFS

news2024/11/26 4:23:39

目录
Part.01 关于HDP
Part.02 核心组件原理
Part.03 资源规划
Part.04 基础环境配置
Part.05 Yum源配置
Part.06 安装OracleJDK
Part.07 安装MySQL
Part.08 部署Ambari集群
Part.09 安装OpenLDAP
Part.10 创建集群
Part.11 安装Kerberos
Part.12 安装HDFS
Part.13 安装Ranger
Part.14 安装YARN+MR
Part.15 安装HIVE
Part.16 安装HBase
Part.17 安装Spark2
Part.18 安装Flink
Part.19 安装Kafka
Part.20 安装Flume

十二、安装HDFS

1.安装libtirpc-devel

HDFS依赖libtirpc-devel,因此需要先安装libtirpc-devel。
创建yml文件,/root/ansible/libtirpc.yml

---
- hosts: all
  vars:
    var_package:
      - libtirpc-devel-0.2.4-0.16.el7.x86_64.rpm
  tasks:
    - name: copy install files
      copy:
        src: "/opt/{{ item }}"
        dest: /root/
      loop: "{{ var_package }}"
    - name: install package
      shell:
        cmd: "yum localinstall -y /root/{{ item }}"
      loop: "{{ var_package }}"
    - name: delete install files
      file:
        path: "/root/{{ item  }}"
        state: absent
      loop: "{{ var_package }}"

执行

ansible-playbook /root/ansible/libtirpc.yml

2.安装服务

在Serivces->Add Service中添加HDFS服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.namenode HA

(1)启用HA

在ACTIONS->Enable NameNode HA中配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改JournalNode的路径为/data01/hadoop/hdfs/journal
在这里插入图片描述
在这里插入图片描述
按照提示在hdp01上创建checkpoint

sudo su hdfs -l -c 'hdfs dfsadmin -safemode enter'
sudo su hdfs -l -c 'hdfs dfsadmin -saveNamespace'

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按照提示在hdp01上对JournalNode进行初始化

sudo su hdfs -l -c 'hdfs namenode -initializeSharedEdits'

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按照提示在hdp01上初始化元数据

sudo su hdfs -l -c 'hdfs zkfc -formatZK'

在这里插入图片描述
按照提示在hdp02上初始化元数据

sudo su hdfs -l -c 'hdfs namenode -bootstrapStandby'

在这里插入图片描述
在这里插入图片描述

(2)确认配置文件

/etc/hadoop/conf/core-site.xml,是NameNode的核心配置文件,主要对NameNode的属性进行设置,也仅仅在NameNode节点生效。
nn和2nn时,fs.defaultFS为hdfs://hdp01.hdp.com:8020
在这里插入图片描述
改为nn HA后,fs.defaultFS为hdfs://hdp315,以高可用集群出现
在这里插入图片描述

参数含义配置值
fs.defaultFS指定访问HDFS文件系统的URI,在HA集群中,此值必须和hdfs-site.xml中的dfs.nameservices配置值一致hdfs://hdp315
ha.zookeeper.quorumZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点hdp01.hdp.com:2181,hdp02.hdp.com:2181,hdp03.hdp.com:2181
fs.trash.interval定义.trash目录下文件被永久删除前保留的时间。在文件从HDFS永久删除前,用户可以自由地把文件从该目录下移出来并立即还原。默认值0,说明垃圾回收站功能是关闭的,一般开启这个会比较好,以防错误删除重要文件,单位是分钟360

4.取消kerberos对页面的认证

正常情况下,kerberos对web页面也会进行认证,可取消掉;如果是对安全较高的场景下,需要在windows电脑上安装kerberos客户端,来实现身份认证,进而登录到web中。
如果未取消认证,会出现如下的界面
在这里插入图片描述
取消kerberos认证的配置
HDFS中CONFIGS->ADVANCED中,
Advanced core-site
hadoop.http.authentication.simple.anonymous.allowed:true
Custom core-site
hadoop.http.authentication.type:simple
重启hdfs服务后,namenode页面可以正常打开
在这里插入图片描述

5.确认HDFS配置

(1)hdfs-site.xml文件

/etc/hadoop/conf/hdfs-site.xml,是HDFS的核心配置文件,主要配置NameNode、DataNode的一些基于HDFS的属性信息、在NameNode和DataNode节点生效。

参数含义配置值
dfs.nameservices指定一个逻辑上的HDFS集群服务名,该服务名是自定义的。当外界访问HDFS集群时,入口就是这个服务名HDP
dfs.ha.namenodes.[nameservice ID]指定两个NameNode的唯一标识,名字随便起,相互不重复即可,在HDFS集群管理中会用到nn1,nn2
dfs.namenode.rpc-address.[nameservice ID].[name node ID]指定nn01、nn02的RPC地址hdp01.hdp.com:8020 hdp02.hdp.com:8020
dfs.namenode.http-address.[nameservice ID].[name node ID]指定nn01、nn02的http地址hdp01.hdp.com:50070 hdp02.hdp.com:50070
dfs.namenode.shared.edits.dir指定集群的两个NameNode共享edits文件目录时,使用JournalNode集群的信息qjournal://hdp01.hdp.com:8485;hdp02.hdp.com:8485;hdp03.hdp.com:8485/hdp315nn
dfs.journalnode.edits.dir指定JournalNode集群在对NameNode的元数据目录进行共享时,数据在本地磁盘存储的路径/data01/hadoop/hdfs/journal
dfs.replication指定DataNode存储数据块的副本数量。默认值是3个,现在有3个DataNode,该值不大于3即可3
dfs.ha.fencing.methods配置隔离机制,一旦需要NameNode切换,使用shell方式进行操作shell(/bin/true)
dfs.namenode.name.dir用于确定将HDFS文件系统的元信息保存在什么目录下。如果这个参数设置为多个目录,那么这些目录下都保存着元信息的镜像备份,推荐多个磁盘路径存放元数据/data01/hadoop/hdfs/namenode
dfs.datanode.data.dir用于确定将HDFS文件系统的数据存储在本地磁盘哪个目录下。可以将这个参数设置为多个磁盘分区上的不同目录,即可将HDFS数据分布在多个不同磁盘分区上/data01/hadoop/hdfs/data,/data02/hadoop/hdfs/data,/data03/hadoop/hdfs/data
dfs.permissions.enabled表示是否在HDFS中开启权限检查,true表示开启,false表示关闭,生产环境建议开启true

(2)NameNode内存

NameNode的内存计算:
每个文件块大概占用150byte,hdp01-02的内存为8G,能存储的文件块为
810241024*1024/150Byte≈5700万
在ambari上配置后内存后,会同步更新到/etc/hadoop/conf/hadoop-env.sh
在这里插入图片描述
在这里插入图片描述
在SETTINGS中将内存设置为5G,然后通过ADVANCED下的Advanced hadoop-env中的参数进行传递
export HADOOP_NAMENODE_INIT_HEAPSIZE=“-Xms{{namenode_heapsize}}”
然后在配置文件hadoop-env.sh中,可以看到内存已经更改为5G
export HADOOP_NAMENODE_INIT_HEAPSIZE=“-Xms5120m”

(3)NameNode心跳

NameNode不仅要应对客户端的请求,还需要对DataNode的心跳进行接收,这些均需要线程
具体在hdfs-site.xml中设置

    <property>
      <name>dfs.namenode.handler.count</name>
      <value>21</value>
    </property>

d f s . n a m e n o d e . h a n d l e r . c o u n t = 20 × log ⁡ e C l u s t e r S i z e dfs.namenode.handler.count = 20\times\log_e^{Cluster Size} dfs.namenode.handler.count=20×logeClusterSize,比如集群规模(DataNode台数)为3台时,此参数设置为21。

(4)ZooKeeper中namenode的配置

NameNode的HA依赖于ZooKeeper,启用后在zk下会产生节点目录。因为已经开启了kerberos认证,因此在查看前应该先以服务principal登录到kdc上,然后才有权限查看到namenode的目录

kinit -kt /etc/security/keytabs/nn.service.keytab nn/hdp01.hdp.com@HDP315.COM
/usr/hdp/3.1.5.0-152/zookeeper/bin/zkCli.sh -server hdp01.hdp.com:2181,hdp02.hdp.com:2181,hdp03.hdp.com:2181
ls /hadoop-ha/hdp315nn

在这里插入图片描述

6.常用命令

因为开启了kerberos认证,所以需要先以这个principal登录,才能进行操作,否则会报错`
在这里插入图片描述

kinit -kt /etc/security/keytabs/nn.service.keytab nn/hdp01.hdp.com@HDP315.COM

(1)直接操作

mkdir:创建路径

hdfs dfs -mkdir /testhdfs

ls: 显示目录信息

hdfs dfs -ls /

③cat:显示文件内容

hdfs dfs -cat /testhdfs/test0219.txt

chmod、chown:更改权限及归属

hdfs dfs -chmod 777 /testhdfs/test0219.txt
hdfs dfs -chown hdfs:hadoop /testhdfs/test0219.txt

cp:从HDFS的一个路径拷贝到HDFS的另一个路径

hdfs dfs -cp /testhdfs/test0219.txt /testhdfs/tmp/

rm:删除文件或文件夹

hdfs dfs -rm /testhdfs/tmp/test0219.txt

mv:在HDFS目录中移动文件

hdfs dfs -mv /testhdfs/test0219.txt /testhdfs/tmp/

tail:显示一个文件的末尾1kb的数据

hdfs dfs -tail /testhdfs/tmp/test0219.txt

rm -r:递归删除目录及目录里面内容

hdfs dfs -rm -r /testhdfs/tmp/

du:统计文件夹的大小信息
第一列标示该目录下总文件大小
第二列标示该目录下所有文件在集群上的总存储大小和你的副本数相关,默认副本数是3,所以第二列的是第一列的三倍(第二列内容=文件大小*副本数)

hdfs dfs -du -s -h /testhdfs
hdfs dfs -du -s -h /testhdfs/test0219.txt

在这里插入图片描述
setrep:设置HDFS中文件的副本数量

hdfs dfs -setrep 10 /testhdfs/test0219.txt

在这里插入图片描述

(2)上传文件

moveFromLocal:把本地的文件剪切到HDFS上

hdfs dfs -moveFromLocal /home/hdfs/test0219.txt /testhdfs/

将hdfs家目录下的test0219.txt上传到HDFS根目录下的testhdfs文件夹
copyFromLocal:将本地文件复制到HDFS上

hdfs dfs -copyFromLocal /home/hdfs/test0219-1.txt /testhdfs/

put:等同于copyFromLocal,生产环境更习惯用put

hdfs dfs -put /home/hdfs/test0219-2.txt /testhdfs/

AppendToFile:将一个本地文件的内容追加到一个HDFS文件末尾

hdfs dfs -appendToFile /home/hdfs/test0219-2.txt /testhdfs/test0219-1.txt

(3)下载文件

copyToLocal:将HDFS上文件复制到本地目录上

hdfs dfs -copyToLocal /testhdfs/test0219.txt /home/hdfs/

get:等同于copyToLocal,生产环境更习惯用get

hdfs dfs -get /testhdfs/test0219.txt /home/hdfs/

7.常见错误

(1)namenode启动失败

在这里插入图片描述
查看50070端口是否被占用,如被占用则kill掉

(2)HA后namenode重启报错

启用HA后重启namenode遇到报错:

resource_management.core.exceptions.ExecutionFailed: Execution of 'ambari-sudo.sh su hdfs -l -s /bin/bash -c 'ulimit -c unlimited ;  /usr/hdp/3.1.5.0-152/hadoop/bin/hdfs --config /usr/hdp/3.1.5.0-152/hadoop/conf --daemon start namenode'' returned 1. namenode is running as process 15506.  Stop it first.

在这里插入图片描述
查看日志/var/log/hadoop/hdfs/hadoop-hdfs-namenode-hdp01.log,确认为journalnode问题
在这里插入图片描述
查看journalnode日志,发现目录没有格式化
在这里插入图片描述
查看/data01/hadoop/hdfs/journal/下文件,发现为空,需要重新格式化

hdfs namenode -initializeSharedEdits

再次启动namenode后仍报错
再次查看日志/var/log/hadoop/hdfs/hadoop-hdfs-namenode-hdp01.log,
在这里插入图片描述
说明namenode元数据发生损坏,需要恢复元数据后,才能启动namenode。恢复过程中,遇到提示有错误的时候,按c继续恢复即可

/usr/hdp/3.1.5.0-152/hadoop/bin/
hadoop namenode -recover

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1287448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot监听器模式源码精讲

1.前言 很多时候我们看源码的时候看不下去&#xff0c;其中一个原因是系统往往使用了许多设计模式&#xff0c;如果你不清楚这些设计模式&#xff0c;这无疑增加了你阅读源码的难度。 springboot中就大量使用了设计模式&#xff0c;本文主要介绍其中的一种监听器模式&#xf…

mybatis 的快速入门以及基于spring boot整合mybatis

MyBatis基础 MyBatis是一款非常优秀的持久层框架&#xff0c;用于简化JDBC的开发 准备工作&#xff1a; 1&#xff0c;创建sprong boot工程&#xff0c;引入mybatis相关依赖2&#xff0c;准备数据库表User&#xff0c;实体类User3&#xff0c; 配置MyBatis&#xff08;在applic…

流媒体方案之FFmpeg——实现物联网视频监控项目

目录 前言 一、FFmpeg介绍 二、FFmpeg简易理解 三、FFmpeg的重要概念 四、软硬件准备 五、移植、运行FFmpeg 六、运行FFmpeg 前言 最近想做一个安防相关的项目&#xff0c;所以跟着韦东山老师的视频来学习视频监控方案的相关知识&#xff0c;韦东山老师讲的课非常好&…

消息中间件之间的区别

一.单机吞吐量 ActiveMQ&#xff1a;万级&#xff0c;吞吐量比RocketMQ和Kafka要低了一个数量级 RabbitMQ&#xff1a;万级&#xff0c;吞吐量比RocketMQ和Kafka要低了一个数量级 RocketMQ&#xff1a;10万级&#xff0c;RocketMQ也是可以支撑高吞吐的一种MQ Kafka&#xff…

当发送“Hello,World”时,channel发生了什么?

一、Netty概述 1.Netty是什么&#xff1f; Netty 是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于快速开发可维护、高性能的网络服务器和客户端。 2.Netty的地位怎么样&#xff1f; Netty 在 Java 网络应用框架中的地位就好比&#xff1a;Spring 框架在 JavaEE …

5个超实用GPT技巧,包括绩效总结、头脑风暴、营销策略等(内附提示词)

今天和大家分享5个用于工作上的GPT技巧&#xff0c;例如进行绩效总结、自我评估、头脑风暴&#xff0c;还是制作PPT方案等等&#xff0c;最大化提升你工作效率&#xff0c;本期内容对于大家来说都非常受用&#xff0c;记得收藏起来哦&#xff01; 那么接下来就直接进入正题吧&a…

力扣题:字符的统计-12.5

力扣题-12.5 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;551. 学生出勤记录 I 解题思想&#xff1a;进行字符的统计即可 class Solution(object):def checkRecord(self, s):""":type s: str:rtype: bool"""fla…

网工内推 | 上市公司初级网工,HCIP认证优先,14薪,享企业年金

01 易佰网络 招聘岗位&#xff1a;初级网络工程师 职责描述&#xff1a; 1.电脑周边设备&#xff08;打印机、扫描仪、传真机、复印机、投影仪等&#xff09;安装与维护&#xff1b; 2.局域网维护&#xff1b;无线网WLAN维护&#xff1b;监控系统维护&#xff1b; 3.固资维护管…

如何使用 Docker 安装 Node-RED

安装 Node-RED 使用 Docker 是一种简便的方式&#xff0c;以下是基本的步骤&#xff1a; 安装 Docker&#xff1a; 确保已在系统上安装 Docker。可从 Docker 官方网站 或 Windows Docker 安装教程 获取安装指南。 拉取运行 Node-RED 镜像&#xff1a; 打开终端或命令行界面&am…

【MySQL】基本安装配置

1 基础知识 1.1 MySQL安装 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 1.1.1 安装过程 配置环境变量&#xff08;和配置Java8的环境变量如出一辙&#xff09;在MySQL解压文件夹下&#xff0c;导入my.ini文件&#xff0c;与bin目录同级&#xff0c;具体文…

关于inline函数声明和定义为什么不可以分离

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言 inline函数在使用时声明和定义不可以分离&#xff0c;接下来我们将会解释为什么是这样的。 我们从程序的编译链接说起。 首先我们先介绍一下程序的翻译环境&#xff1a; 编译分以下几个步骤&#xff0c;预处理&#x…

sort by modulus of a complex number

描述 复数E包含实部x和虚部y, Exyi;E的模为: 输入n(<1000)和n对(x,y); 按模数升序对复合体进行排序&#xff0c;如果模数相等&#xff0c;则按输入顺序排序。 排序后输出n行of (x_i,y_i,mod_i)&#xff0c;保留2个十进制小数。 输入 输入n和n对(x,y); 输出 输出排序后的n行(…

Android : AndroidStudio开发工具优化

1.开启 gradle 单独的守护进程 Windows: 进入目录 C:\Users\Administrator\.gradle 创建文件&#xff1a; gradle.properties # Project-wide Gradle settings. # IDE (e.g. Android Studio) users: # Settings specified in this file will override any Gradle s…

在python的Scikit-learn库中,可以使用train_test_split函数来划分训练集和测试集。

文章目录 一、在Scikit-learn库中&#xff0c;可以使用train_test_split函数来划分训练集和测试集总结 一、在Scikit-learn库中&#xff0c;可以使用train_test_split函数来划分训练集和测试集 在Scikit-learn库中&#xff0c;可以使用train_test_split函数来划分训练集和测试…

深度观察|近视防控乱象下,角膜塑形镜撬动百亿市场的背后…

前不久&#xff0c;“晒眼皮”莫名上了热搜。顾名思义&#xff0c;就是在太阳底下闭眼&#xff0c;让眼皮享受日光浴。 不少近视患者相信&#xff0c;这种做法可以延缓近视&#xff0c;甚至可以让近视度数“清零”。毫无疑问&#xff0c;这是一个收割智商税的做法&#xff0c;…

数字双胞胎:低代码与工业4.0的崭新融合

引言 随着工业4.0的快速发展&#xff0c;数字化转型已经成为制造业的关键课题。在这个数字化浪潮中&#xff0c;"数字双胞胎"技术崭露头角&#xff0c;它将实际世界与数字模拟相连接&#xff0c;提供了更好的生产过程理解、监控和优化方法。但数字双胞胎的构建和维护…

CoreDNS实战(七)-日志处理

本文主要用于介绍CoreDNS用来记录日志的几种方式以及在生产环境中遇到的一些问题和解决方案。 1 log插件 coredns的日志输出并不如nginx那么完善&#xff08;并不能在配置文件中指定输出的文件目录&#xff0c;但是可以指定日志的格式&#xff09;&#xff0c;默认情况下不论…

算法笔记:样条插值

1 什么是样条 样条来源于早期工程制图&#xff0c;为了将一些固定点连成一条光滑的曲线&#xff0c;采用具有弹性的木条固定在这些点上通过样条画出来的曲线不仅经过各固定点&#xff0c;而且连续光滑 2 样条函数 数学上定义成一个分段多项式函数 每两个点之间用一个多项式来…

手机大厂必备测试技能有哪些?CTS 兼容测试首当其冲

这么多手机厂商都要改造成自己的UI&#xff0c;甚至要对Android底层进行改动&#xff0c;难免不会改出什么问题。 所以Google为了这些定制的系统能够符合统一的规范、兼容Android底层的API&#xff0c;就引入了CTS测试。 01 何为CTS 相信小伙伴们都有用过各种款式的Android手…

CUDA简介——编程模式

1. 引言 前序博客&#xff1a; CUDA简介——基本概念 CPU是用于控制的。即&#xff0c;host控制整个程序流程&#xff1a; 1&#xff09;程序以Host代码main函数开始&#xff0c;然后顺序执行。 Host代码是顺序执行的&#xff0c;并执行在CPU之上。Host代码会负责Launch ke…