hadoop安装

简介        

        Hadoop是一个开源的分布式存储和计算框架,最初由Apache软件基金会开发。它的发展背景可以追溯到Google的MapReduce和Google File System(GFS)的论文,这两篇论文启发了Hadoop的设计。Hadoop的主要应用场景包括大数据存储、处理和分析,特别是在需要处理海量数据的互联网和企业环境中。它被广泛用于日志分析、数据挖掘、机器学习、图像处理等领域。 Hadoop的生态系统还包括许多相关项目,如Hive、HBase、Spark等,为大数据处理提供了丰富的工具和技术。

        虽然当前提出hadoop的缺点以及弊端,但是当前hadoop的全功能性还是能解决大型项目的大多数问题。学习hadoop变较为必要。

安装以及环境配置

hostname:ipaddr应用属性
vm02:10.0.0.102hadoop+jdk+zookeeper主节点(DataNode+主NameNode+ResourceManager)
vm03:10.0.0.103hadoop+jdk+zookeeper从节点(Datanode+备用Namenode+备ResourceManager)
vm04:10.0.0.104hadoop+jdk+zookeeper从节点(Datanode)

        下载JDK、zookeeper以往文章中已经做了解释本文不再累述 

        hadoop进入官网选择最新版本下载。

wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

解压压缩包

[hadoop@vm03 ~]$ tar -zxf hadoop-3.3.6.tar.gz 
[hadoop@vm03 ~]$ ln -s hadoop-3.3.6 hadoop 
[hadoop@vm03 ~]$ rm -rf hadoop-3.3.6.tar.gz 

设置软连接,方便后期hadoop升级,做替换

hadoop-env.sh配置

        hadoop-env.sh文件主要配置与Hadoop环境相关的变量,文件放置在hadoop/etc/hadoop/目录下,主要配置jdk的目录。

[hadoop@vm03 hadoop]$ echo $JAVA_HOME
/jdk/jdk1.8.0_144/
[hadoop@vm03 hadoop]$ vim hadoop-env.sh 

core-site.xml配置

core-site.xml文件主要配置Hadoop的公有属性,用于配置Hadoop核心功能的参数。它包含了Hadoop集群中各个节点共享的核心配置信息,如Hadoop文件系统(HDFS)的默认块大小、默认副本数量、以及其他与文件系统相关的参数。同样位于hadoop/etc/hadoop路径下
<!-- core-site.xml -->
<configuration><!-- 指定Hadoop文件系统的默认块大小 --><property><name>dfs.blocksize</name><value>134217728</value></property><!-- 指定Hadoop文件系统的默认副本数量 --><property><name>dfs.replication</name><value>3</value></property>	<!-- 指定hadoop数据的存储目录 --><property><name>hadoop.tmp.dir</name><value>/home/hadoop/data</value></property><!-- 指定NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><!-- 配置zookeeper管理hdfs --><property><name>ha.zookeeper.quorum</name><value>vm02:2181,vm03:2181,vm04:2181</value></property>	
</configuration>

hdfs-site.xml配置

         hdfs-site.xml文件主要配置和HDFS相关的属性, 同样位于hadoop/etc/hadoop路径下
<!--hdfs-site.xml配置-->
<configuration>
<!-- NameNode数据存储目录 --><property><name>dfs.namenode.name.dir</name><value>file://${hadoop.tmp.dir}/name</value></property><!-- DataNode数据存储目录 --><property><name>dfs.datanode.data.dir</name><value>file://${hadoop.tmp.dir}/data</value></property><!-- JournalNode数据存储目录 --><property><name>dfs.journalnode.edits.dir</name><value>${hadoop.tmp.dir}/jn</value></property><!-- 完全分布式集群名称 --><property><name>dfs.nameservices</name><value>mycluster</value></property><!-- 集群中NameNode节点都有哪些 --><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><!-- NameNode的RPC通信地址 --><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>vm02:8020</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>vm03:8020</value></property><!-- NameNode的http通信地址 --><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>vm02:9870</value></property><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>vm03:9870</value></property><!-- 指定NameNode元数据在JournalNode上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://vm02:8485;vm03:8485/mycluster</value></property><!-- 访问代理类:client用于确定哪个NameNode为Active --><property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 --><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!-- 使用隔离机制时需要ssh秘钥登录--><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/hadoop/.ssh/id_rsa</value></property><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property>
</configuration>

mapred-site.xml配置

<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

yarn-site.xml配置

<configuration><!-- ResourceManager连接的最大等待时间(毫秒) --><property><name>yarn.resourcemanager.connect.max-wait.ms</name><value>2000</value> <!-- 设置ResourceManager连接的最大等待时间为2000毫秒 --></property><!-- 启用ResourceManager的高可用性 --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value> <!-- 启用ResourceManager的高可用性 --></property><!-- 启动故障自动恢复 --><property><name>yarn.resourcemanager.ha.automatic-failover.enable</name><value>true</value> <!-- 启动故障自动恢复 --></property><!-- 启用内嵌式的故障自动恢复 --><property><name>yarn.resourcemanager.ha.automatic-failover.embedded</name><value>true</value> <!-- 启用内嵌式的故障自动恢复 --></property><!-- 设置ResourceManager所属的集群ID --><property><name>yarn.resourcemanager.cluster-id</name><value>yarn-rm-cluster</value> <!-- 设置ResourceManager所属的集群ID为 yarn-rm-cluster --></property><!-- 设置ResourceManager的ID列表 --><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value> <!-- 设置ResourceManager的ID列表为 rm1,rm2 --></property><!-- 设置ResourceManager节点rm1的主机名 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>vm02</value> <!-- 设置ResourceManager节点rm1的主机名为 vm02 --></property><!-- 设置ResourceManager节点rm2的主机名 --><property><name>yarn.resourcemanager.hostname.rm2</name><value>vm03</value> <!-- 设置ResourceManager节点rm2的主机名为 vm03 --></property><!-- 启用ResourceManager的状态恢复 --><property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value> <!-- 启用ResourceManager的状态恢复 --></property><!-- 设置存储ResourceManager状态信息的ZooKeeper地址 --><property><name>yarn.resourcemanager.zk.state-store.address</name><value>vm02:2181,vm03:2181,vm04:2181</value> <!-- 设置存储ResourceManager状态信息的ZooKeeper地址为 vm02:2181,vm03:2181,vm04:2181 --></property><!-- 设置ResourceManager节点rm1的地址 --><property><name>yarn.resourcemanager.address.rm1</name><value>vm02:8032</value> <!-- 设置ResourceManager节点rm1的地址为 vm02:8032 --></property><!-- 设置ResourceManager节点rm1的调度器地址 --><property><name>yarn.resourcemanager.scheduler.address.rm1</name><value>vm02:8034</value> <!-- 设置ResourceManager节点rm1的调度器地址为 vm02:8034 --></property><!-- 设置ResourceManager节点rm1的Web应用地址 --><property><name>yarn.resourcemanager.webapp.address.rm1</name><value>vm02:8088</value> <!-- 设置ResourceManager节点rm1的Web应用地址为 vm02:8088 --></property><!-- 设置ResourceManager节点rm2的地址 --><property><name>yarn.resourcemanager.address.rm2</name><value>vm03:8032</value> <!-- 设置ResourceManager节点rm2的地址为 vm03:8032 --></property><!-- 设置ResourceManager节点rm2的调度器地址 --><property><name>yarn.resourcemanager.scheduler.address.rm2</name><value>vm03:8034</value> <!-- 设置ResourceManager节点rm2的调度器地址为 vm03:8034 --></property><!-- 设置ResourceManager节点rm2的Web应用地址 --><property><name>yarn.resourcemanager.webapp.address.rm2</name><value>vm03:8088</value> <!-- 设置ResourceManager节点rm2的Web应用地址为 vm03:8088 --></property><!-- 设置ZooKeeper的地址,用于协调ResourceManager的高可用性和故障自动恢复 --><property><name>yarn.resourcemanager.zk-address</name><value>vm02:2181,vm03:2181,vm04:2181</value> <!-- 设置ZooKeeper的地址,用于协调ResourceManager的高可用性和故障自动恢复为 vm02:2181,vm03:2181,vm04:2181 --></property><!-- 启用日志聚合 --><property><name>yarn.log-aggregation-enable</name><value>true</value> <!-- 启用日志聚合 --></property><!-- 设置Hadoop使用的ZooKeeper地址 --><property><name>hadoop.zk.address</name><value>vm02:2181,vm02:2181,vm02:2181</value> <!-- 设置Hadoop使用的ZooKeeper地址为 vm02:2181,vm02:2181,vm02:2181 --></property><!-- 设置NodeManager的辅助服务 --><property><name>yarn.nodemanager.aux-sevices</name><value>mapreduce_shuffle</value> <!-- 设置NodeManager的辅助服务为 mapreduce_shuffle --></property><!-- 设置MapReduce Shuffle服务的类 --><property><name>yarn.nodemanager.aux-sevices.mapreduce_shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandle</value> <!-- 设置MapReduce Shuffle服务的类为 org.apache.hadoop.mapred.ShuffleHandle --></property>		
</configuration>

workers文件配置

        workers文件的名称是在hadoop-env.sh 文件中指定的。在 hadoop-env.sh 文件中,可以找到一个环境变量 HADOOP_WORKERS,它指定了workers 文件的路径。通常情况下,HADOOP_WORKERS 的默认值是 ${HADOOP_CONF_DIR}/workers ,其中 ${HADOOP_CONF_DIR} 是指向 Hadoop 配置文件目录的环境变量。

注意:旧版本这里使用的是slaves

[hadoop@vm02 ~]$ cd hadoop/etc/hadoop/
[hadoop@vm02 hadoop]$ vim workers vm02
vm03
vm04  

        此文件配置集群中的所有hostname。

注:所有节点配置内容保持一致

试运行

启动Zookeeper集群

        所有节点都需启动

[hadoop@vm03 ~]$ zkServer.sh restart 
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@vm03 ~]$ zkServer.sh  status 
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

启动JournalNode集群

        在Hadoop中,JournalNode集群用于存储NameNode的编辑日志。它们帮助确保在NameNode发生故障时不会丢失数据,并支持NameNode的高可用性和故障转移。 JournalNode集群是Hadoop分布式文件系统(HDFS)的关键组件,用于维护持久化的NameNode编辑日志,以便在发生故障时进行恢复。
        在集群所有节点分别启动JournalNode服务

hadoop/sbin/hadoop-daemon.sh  start journalnode
[hadoop@vm03 ~]$ hadoop/sbin/hadoop-daemon.sh  start journalnode
WARNING: Use of this script to start HDFS daemons is deprecated.
WARNING: Attempting to execute replacement "hdfs --daemon start" instead.
WARNING: /home/hadoop/hadoop-3.3.6/logs does not exist. Creating.
[hadoop@vm03 ~]$ jps 
7936 JournalNode
7780 QuorumPeerMain
7975 Jps

格式化主节点NameNode​​​​​​​

##  在vm02节点(NameNode主节点)上,使用以下命令对 NameNode进行格式化
hadoop/bin/hdfs namenode -format  
hadoop/bin/hdfs zkfc -formatZK
hadoop/bin/hdfs namenode
##在备用节点vm03进行同步主节点的元数据hadoop/bin/hadoop namenode -bootstrapStandby 
##所有节点关闭zookeeper集群
zkServer.sh stop ##所有节点关闭 journalnode集群
hadoop/sbin/hadoop-daemon.sh stop journalnode##所有节点启动zookeeper集群
zkServer.sh start 
#主节点vm02启动集群hadoop/sbin/start-all.sh 

        格式化ZooKeeper中与故障转移控制器(Failover Controller)相关的数据。这个命令通常在设置故障转移控制器时使用,以确保ZooKeeper中的相关数据处于正确的状态。

hadoop/bin/hdfs zkfc -formatZK

所有节点启动zookeeper集群     

 vm02启动HDFS集群

验证

       通过jps查看namenode进程所在节点,通过web进行访问

[hadoop@vm03 ~]$ jps 
1666 QuorumPeerMain
2727 DFSZKFailoverController
2315 DataNode
1820 JournalNode
2125 NameNode
3294 Jps
[hadoop@vm03 ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:f1:d6:3e brd ff:ff:ff:ff:ff:ffinet 10.0.0.103/24 brd 10.0.0.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fef1:d63e/64 scope link valid_lft forever preferred_lft forever

打开网页输入以下namenode的ip地址

http://10.0.0.103:9870
http://10.0.0.102:9870

此时namenode节点都是可以通过web节点上线的,vm03作为备用节点。

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

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

相关文章

行业追踪,2023-11-30

自动复盘 2023-11-30 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

h5小游戏--2048

2048 经典2048小游戏&#xff0c;基于JS、Html5改写版 效果预览 点我下载源代码 下载代码解压后&#xff0c;双击index.html即可开始本游戏。 Game Rule 游戏规则 以下为游戏默认规则&#xff0c;若需要修改规则请修改代码。 移动箭头键来移动方块&#xff0c;当两个相同数…

flutter开发实战-readmore长文本展开和收缩控件

flutter开发实战-readmore长文本展开和收缩控件 当长文本展开和收缩控件&#xff0c;我们需要使用readmore来处理长文本展开和收缩&#xff0c;方便阅读 一、引入readmore 在工程的pubspec.yaml中引入插件 readmore: ^2.1.0ReadMoreText的属性如下 const ReadMoreText(this.…

Andrioid T 实现充电动画(2)

Andrioid T 实现充电动画&#xff08;2&#xff09; 以MTK平台为例&#xff0c;实现充电动画 效果图 资源包 修改文件清单 system/vendor/mediatek/proprietary/packages/apps/SystemUI/res/layout/prize_charge_layout.xmlsystem/vendor/mediatek/proprietary/packages/ap…

Bilateral Guided Upsampling

Abstract 我们提出了一种加速一大类图像处理算子的算法。给定低分辨率参考输入和输出对&#xff0c;我们通过拟合将输入映射到输出的局部曲线来对算子进行建模。然后&#xff0c;我们可以通过在全分辨率输入上评估这些低分辨率曲线来生成全分辨率输出。我们证明&#xff0c;这…

电商项目之Web实时消息推送(附源码)

文章目录 1 问题背景2 前言3 什么是消息推送4 短轮询5 长轮询5.1 demo代码 6 iframe流6.1 demo代码 7 SSE7.1 demo代码7.2 生产环境的应用 &#xff08;重要&#xff09; 8 MQTT 1 问题背景 扩宽自己的知识广度&#xff0c;研究一下web实时消息推送 2 前言 文章参考自Web 实时消…

【数值计算方法(黄明游)】矩阵特征值与特征向量的计算(三):Jacobi 旋转法【理论到程序】

文章目录 一、Jacobi 旋转法1. 基本思想2. 计算过程演示 二、Python实现迭代过程&#xff08;调试&#xff09; 矩阵的特征值&#xff08;eigenvalue&#xff09;和特征向量&#xff08;eigenvector&#xff09;在很多应用中都具有重要的数学和物理意义。Jacobi 旋转法是一种用…

LeetCode Hot100 438.找到字符串中所有字母异位词

题目&#xff1a; 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 代码&#xff1a; class Solution …

位图和布隆过滤器(C++)

位图和布隆过滤器 一、位图1. 引入2. 概念3. 代码实现setreset完整代码 4. 位图的应用 二、布隆过滤器1. 引入2. 概念3. 逻辑结构4. 特点5. 代码实现6. 布隆过滤器的应用 三、哈希切割 一、位图 1. 引入 当面对海量数据需要处理时&#xff0c;内存不足以加载这些数据&#xf…

The Sandbox 携手 Sandsoft,与 Nuqtah 合作推动沙特阿拉伯的 Web3 发展

新的合作伙伴关系将增强创作者的能力&#xff0c;促进区块链生态系统的包容性。 The Sandbox 及其合作伙伴 Sandsoft 是移动游戏开发商和发行商&#xff0c;也是 AAA 人才驱动的投资者&#xff0c;他们非常高兴地宣布与 Nuqtah 建立新的合作伙伴关系&#xff0c;Nuqtah 是中东和…

numpy模块安装方法

https://www.bilibili.com/video/BV1qN411R7V2/?spm_id_from333.337.search-card.all.click&vd_sourcefb8dcae0aee3f1aab700c21099045395

Linux:Ubuntu系统安装软件

本次以安装vim为例 sudo apt-get remove vim //卸载vim sudo apt-get install vim //安装vim sudo apt-cache show vim //获取vim软件信息安装时间较长。 安装完成后&#xff0c;执行下第三条指令&#xff0c;测试下是否安装成功即可。

在gazebo里搭建一个livox mid360 + 惯导仿真平台测试 FAST-LIO2

在gazebo里搭建一个livox mid360 惯导仿真平台测试 FAST-LIO2 前言立方体平台加入 livox mid360 激光雷达加入IMU模块调整底盘大小 并设计调用接口测试 Fast-Lio2 前言 livox mid360 在官网一直没有货&#xff0c;在gazebo里可以仿真该雷达形式的点云。 但是其只发布雷达的数…

Spire.Office 8.11.2 for NET fix Crack

内容摘自来自互联网------或者SDK官方本身手册 Spire.Doc for .NET A professional Word .NET library designed to create, read, write, convert and print Word document files in any .NET ( C#, VB.NET, ASP.NET, .NET Core, Xamarin ) application with fast and high qu…

Aurora8B10B(一) 从IP配置界面学习Aurora

一. 简介 哈喽&#xff0c;大家好&#xff0c;好久没有给大家写FPGA技术的文章&#xff0c;是不是已经忘记我是做FPGA的啦&#xff0c;O(∩_∩)O哈哈~。 这里将会给大家分享我学习到的第一个高速接口Aurora8B10B&#xff0c;有点复杂&#xff0c;但不是特别复杂&#xff0c;对…

使用vscode的remotessh插件远程连接的时候被要求重复输入密码

问题描述&#xff1a; 需要远程连接服务器&#xff0c;使用ssh&#xff0c;我用到的是vscode里面的remotessh插件。配置好config以后 HostHostNameUserPortIdentifyFile进入到了vscode的密码登录界面&#xff0c;但是一直被要求循环输入密码&#xff0c;很奇怪&#xff0c;去…

论文阅读——DINOv

首先是关于给了提示然后做分割的一些方法的总结&#xff1a; 左边一列是prompt类型&#xff0c;右边一列是使用各个类型的prompt的模型。这些模型有分为两大类&#xff1a;Generic和Refer&#xff0c;通用分割和参考分割。Generic seg 是分割和提示语义概念一样的所有的物体&am…

LLM之Agent(二):BabyAGI的详细教程

BabyAGI是一个 AI 支持的任务管理系统&#xff08;Python脚本&#xff09;&#xff0c;使用 OpenAI 和 Pinecone API 创建, 优先级排序和执行任务。该系统背后的主要思想是基于先前任务的结果和预定义的目标创建任务。脚本然后使用 OpenAI 的自然语言处理&#xff08;NLP&#…

leetCode 93.复原 IP 地址 + 回溯算法 + 图解 + 笔记

93. 复原 IP 地址 - 力扣&#xff08;LeetCode&#xff09; 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 "192.168.1.1…

CS 2520nonono

CS 2520nonono WeChat&#xff1a;yj4399_​​​​​ Sina Visitor System High-level●3 Congestion Control Algorithms:○TCP Reno:■additive increase, multiplicative decrease function to adjust window size for every RTTuntil a packet loss is detected○TCP CUBI…