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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop部署CentOS7 -> 正文阅读

[大数据]Hadoop部署CentOS7

一、什么是Hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架,能够对大量数据进行分布式处理软件框架。

二、部署

1、部署前准备

  • 规划集群服务器,修改主机名,修改hosts配置好映射
#修改主机名
[root@localhost opt]# hostnamectl set-hostname {新的主机名}

#地址映射
[root@cathlhdp1 opt]# more /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.31.59   cathlhdp1
192.168.31.60   cathlhdp2
192.168.21.167   cathlhdp3

#地址映射
[root@cathlhdp2 opt]# more /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.31.59   cathlhdp1
192.168.31.60   cathlhdp2
192.168.21.167   cathlhdp3

#地址映射
[root@cathlhdp3 opt]# more /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.31.59   cathlhdp1
192.168.31.60   cathlhdp2
192.168.21.167   cathlhdp3
  • 关闭防火墙
#关闭防火墙和SELINUX
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# systemctl stop firewalld
#设置selinux为disable
[root@localhost ~]#vi /etc/selinux/config 
SELINUX=disabled
[root@localhost ~]#setenforce 0
  • 安装JDK1.8
  • 建立SSH无密码登录本机,确保所有机器都可以相互免密登录
#在cathlhdp1上生成免密登录秘钥文件
[root@cathlhdp1 ~]# ssh-keygen -t rsa -P ""
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
71:54:30:f2:2a:c9:74:b2:2a:0c:25:af:e3:f1:25:01 root@cathlhdp1
The key's randomart image is:
+--[ RSA 2048]----+
|        . +o.    |
|         + .     |
|.E.   o o o      |
| +.  o = +       |
|. ..  = S        |
| +  .. .         |
|o.o...           |
|..o.o            |
| . .             |
+-----------------+
[root@cathlhdp1 ~]# cd .ssh
[root@cathlhdp1 .ssh]# ls
id_rsa  id_rsa.pub
[root@cathlhdp1 .ssh]# cat id_rsa.pub >> authorized_keys
[root@cathlhdp1 .ssh]# cp id_rsa.pub id_rsa_cathlhdp1.pub

#在cathlhdp2上生成免密登录秘钥文件
[root@cathlhdp2 ~]# ssh-keygen -t rsa -P ""
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
71:54:30:f2:2a:c9:74:b2:2a:0c:25:af:e3:f1:25:01 root@cathlhdp1
The key's randomart image is:
+--[ RSA 2048]----+
|        . +o.    |
|         + .     |
|.E.   o o o      |
| +.  o = +       |
|. ..  = S        |
| +  .. .         |
|o.o...           |
|..o.o            |
| . .             |
+-----------------+
[root@cathlhdp2 ~]# cd .ssh
[root@cathlhdp2 .ssh]# ls
id_rsa  id_rsa.pub
[root@cathlhdp2 .ssh]# cat id_rsa.pub >> authorized_keys
[root@cathlhdp2 .ssh]# cp id_rsa.pub id_rsa_cathlhdp2.pub

#把id_rsa_cathlhdp1.pub传到cathlhdp2的/root/.ssh下,并执行
[root@cathlhdp2 .ssh]# cat id_rsa_cathlhdp1.pub >> authorized_keys
#校验是否可免密登录,有提示时输入yes,无需输入密码
[root@cathlhdp2 .ssh]# ssh 192.168.31.59
The authenticity of host '192.168.31.59 (192.168.31.59)' can't be established.
ECDSA key fingerprint is 33:17:fe:0a:dc:dd:7e:92:9f:d5:a7:a0:8b:9c:f9:c8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.31.59' (ECDSA) to the list of known hosts.
Last login: Tue Aug  3 22:46:46 2021 from localhost
[root@cathlhdp1 ~]# 

#把id_rsa_cathlhdp2.pub传到cathlhdp1的/root/.ssh下,并执行
[root@cathlhdp1 .ssh]# cat id_rsa_cathlhdp2.pub >> authorized_keys
#校验是否可免密登录,有提示时输入yes,无需输入密码
[root@cathlhdp1 .ssh]# ssh 192.168.31.60
Last failed login: Tue Aug  3 22:49:16 EDT 2021 from cathlhdp1 on ssh:notty
There were 2 failed login attempts since the last successful login.
Last login: Tue Aug  3 22:47:38 2021 from localhost
[root@cathlhdp2 ~]# 

2、下载安装包

下载地址:https://archive.apache.org/dist/hadoop/common/

下载hadoop-2.7.3.tar.gz并解压

3、部署安装

Hadoop集群部署详见:https://www.cnblogs.com/LHWorldBlog/p/8232935.html

Yarn集群部署详见:https://www.cnblogs.com/LHWorldBlog/p/8219453.html

三、问题排查

  • 无法启动DataNode

执行start-dfs.sh脚本启动Hadoop后,通过jps命令检测DataNode节点进程发现有DataNode进程启动失败,报错:

2021-08-05 03:30:04,886 WARN org.apache.hadoop.hdfs.server.common.Storage: Failed to add storage directory [DISK]file:/opt/hadoop-2.7.3/hdfs/ha/dfs/data/
java.io.IOException: Incompatible clusterIDs in /opt/hadoop-2.7.3/hdfs/ha/dfs/data: namenode clusterID = CID-e6c3999d-0727-4bfd-8c73-0fa0889051db; datanode clusterID = CID-d51af208-8afb-422d-bb53-6a0c77510d2c
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:775)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadStorageDirectory(DataStorage.java:300)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:416)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:395)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:573)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1362)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1327)
        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:223)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:802)
        at java.lang.Thread.run(Thread.java:748)

原因分析:首先日志警告,“Failed to add storage directory [DISK]file:/opt/hadoop-2.7.3/hdfs/ha/dfs/data/
”添加存储文件失败,失败路劲位于“/opt/hadoop-2.7.3/hdfs/ha/dfs/data/”。紧接着报Java IO异常“java.io.IOException”,异常信息里显示的是,namenode和datanode的clusterID不一致,这些异常就导致了后面提示初始化失败、DataNode进程退出等异常、警告信息。网上很多其他博主说,这是因为多次对namenode进行format导致的。将namenode和datanode的clusterID和namespaceID修改一致即可。的确,进行了两次format操作,但是修改过后仍然报同样的问题,通过对比”/tmp/hadoop-hadoop/dfs/data/current/VERSION”文件发现VERSION文件里clusterID都是一致的,其他的信息也一致

解决方案:删除“/tmp/hadoop-hadoop/dfs/data/current/VERSION”文件,再重新启动hadoop。

问题总结:该问题因为多次对namenode进行format,每一次format主节点NameNode产生新的clusterID、namespaceID,于是导致主节点的clusterID、namespaceID与各个子节点DataNode不一致。当format过后再启动hadoop,hadoop尝试创建新的current目录,但是由于已存在current目录,导致创建失败,最终引起DataNode节点的DataNode进程启动失败,从而引起hadoop集群完全启动失败。因此可以通过直接删除数据节点DataNode的current文件夹,进行解决该问题。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-05 17:25:10  更:2021-08-05 17:25:55 
 
开发: 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 4:26:38-

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