02hadoop伪分布式搭建

3. 环境安装

3.1 安装方式

  • 单机模式

    只能启动MapReduce

  • 伪分布式

    能启动HDFS、MapReduce 和 YARN的大部分功能

  • 完全分布式

    能启动Hadoop的所有功能

3.2 安装JDK

3.2.1 JDK安装步骤

下载JDK安装包(下载Linux系统的 .tar.gz 的安装包)

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

[root@vm ~]# tar -xf jdk-8u251-linux-x64.tar.gz -C /usr/local/
[root@vm ~]# cd /usr/local/
[root@vm local]# mv jdk1.8.0_251/ jdk8
[root@vm local]# cd
[root@vm ~]# vim .bashrc
...
export JAVA_HOME=/usr/local/jdk8
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=.:$JAVA_HOME/bin:$PATH

[root@vm ~]# source .bashrc
[root@vm ~]# java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)

3.3 安装Hadoop并配置伪分布式

3.3.1 Hadoop安装配置步骤
  1. 配置免登录认证,避免使用Hadoop时的权限问题

    [root@vm ~]# ssh-keygen -t rsa
    [root@vm ~]# cd ~/.ssh;cat id_rsa.pub >> authorized_keys
    [root@vm .ssh]# ssh localhost
    [root@vm ~]# exit
    

    下载Hadoop 2.10(374M)

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

  2. 解压到 /usr/local 目录中,并将文件夹重命名为 hadoop,

    [root@vm ~]# tar xf hadoop-2.10.0.tar.gz -C /usr/local/
    [root@vm ~]# cd /usr/local
    [root@vm local]# mv hadoop-2.10.0/ hadoop2.10
    #非root用户可能需要执行 chown -R user:user  hadoop2.10
    [root@vm local]# cd /usr/local/hadoop2.10/bin
    [root@vm bin]# ./hadoop version
    Hadoop 2.10.0
    Subversion ssh://git.corp.linkedin.com:29418/hadoop/hadoop.git -r e2f1f118e465e787d8567dfa6e2f3b72a0eb9194
    Compiled by jhung on 2019-10-22T19:10Z
    Compiled with protoc 2.5.0
    From source with checksum 7b2d8877c5ce8c9a2cca5c7e81aa4026
    This command was run using /usr/local/hadoop2.10/share/hadoop/common/hadoop-common-2.10.0.jar
    
  3. 设置JAVE_HOME环境变量

    [root@vm bin]# vim  /usr/local/hadoop2.10/etc/hadoop/hadoop-env.sh
    export JAVA_HOME=/usr/local/jdk8 #修改前JAVA_HOME=${JAVA_HOME}
    
  4. 设置Hadoop环境变量

    [root@vm bin]# cd
    [root@vm ~]# vim .bashrc
    #在末尾追加
    export HADOOP_HOME=/usr/local/hadoop2.10
    export CLASSPATH=.:{JAVA_HOME}/lib:${HADOOP_HOME}/sbin:$PATH
    export PATH=.:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
    
    [root@vm ~]# source .bashrc
    
  5. 伪分布式配置,修改2个配置文件(core-site.xml 和 hdfs-site.xml)

    补充如下内容

    [root@vm ~]# vim /usr/local/hadoop2.10/etc/hadoop/core-site.xml
    <configuration>
        <property>
            <!--数据目录配置参数-->
            <name>hadoop.tmp.dir</name>
            <value>file:/usr/local/hadoop2.10/tmp</value>
        </property>
        <property>
            <!--文件系统配置参数-->
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
    </configuration>
    
    [root@vm ~]# vim /usr/local/hadoop2.10/etc/hadoop/hdfs-site.xml
    <configuration>
        <property>
            <!--副本数量-->
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <!--namenode数据目录-->
            <name>dfs.namenode.name.dir</name>
            <value>file:/usr/local/hadoop2.10/tmp/dfs/name</value>
        </property>
        <property>
            <!--datanode数据目录-->
            <name>dfs.datanode.data.dir</name>
            <value>file:/usr/local/hadoop2.10/tmp/dfs/data</value>
        </property>
    </configuration>
    
    
    #/usr/local/hadoop2.10/tmp/dfs/name/current/VERSION记录clusterid,与 /usr/local/hadoop2.10/tmp/dfs/data/current/VERSION记录clusterid 必须是相同的,否则启动失败
    
  6. 配置YARN,修改mapred-site.xml、yarn-site.xml

    补充如下配置

    [root@vm ~]# cd /usr/local/hadoop2.10/etc/hadoop
    [root@vm hadoop]# cp mapred-site.xml.template mapred-site.xml
    [root@vm hadoop]# vim mapred-site.xml
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    
    [root@vm hadoop]# vim yarn-site.xml
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value> #计算方式
        </property>
    
  7. 执行NameNode格式化

    [root@vm hadoop]# cd /usr/local/hadoop2.10/bin
    [root@vm bin]# ./hdfs namenode -format
    
    出现 Storage directory /usr/local/hadoop2.10/tmp/dfs/name has been successfully formatted 则表示格式化成功
    
  8. 启动Hadoop所有组件

    [root@vm bin]# cd /usr/local/hadoop2.10/sbin
    [root@vm sbin]# ./start-all.sh
    启动时可能会出现警告,直接忽略即可,不影响正常使用
    [root@vm sbin]# jps #查看Hadoop相关组件进程
    14513 DataNode
    14882 NodeManager
    14643 SecondaryNameNode
    14789 ResourceManager
    14425 NameNode
    14921 Jps
    

启动成功后,可访问Web页面查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件 http://localhost:50070

  1. 测试 - 将本地文件上传至hdfs

    [root@vm ~]# hadoop fs -put jdk-8u251-linux-x64.tar.gz /
    [root@vm ~]# hadoop fs -ls /
    Found 1 items
    -rw-r--r--   1 root supergroup  195132576 2024-03-10  /jdk-8u251-linux-x64.tar.gz
    #也可以在浏览器中Utilities->Browse the file system查看,及上传下载删除操作
    

4. HDFS Shell操作

hadoop fs -ls / 	#查看HDFS系统目录
hadoop fs -mkdir -p 绝对路径		#创建文件夹
hadoop fs -put    本地文件     HDFS目录		#上传文件
hadoop fs  -get   HDFS文件    本地目录		#下载文件
hadoop fs -rm -r 目录		#删除文件或目录
haddop fs -text 文件绝对路径		#查看文件内容
hadoop fs -mv 源文件 目标目录
hadoop fs -cp 源文件  目标目录

5. MapReduce详解

5.1 MapReduce概述

5.1.1 MapReduce定义
  1. MapReduce是Hadoop提供的一套进行分布式计算的框架,用于大规模数据集(大于1TB)的并行运算
  2. MapReduce将计算过程拆分为2个阶段:Map(映射)阶段和Reduce(规约)阶段
5.1.2 MapReduce编程模型
  • MapReduce分而治之思想

    【示例1】
        需要在一堆扑克牌(张数未知)中统计四种花色的牌有多少张
        思路:需要找几个人(比如说四个人),每人给一堆,数出来四种花色的张数,然后汇总
        
    【示例2】
        一堆钞票,请查找出各种面值的钞票分别有多少张?
        思路:每个人分一部分钞票,数出各种面值的分别有多少张,然后再汇总
    
  • 统计文件中每个单词出现的次数原理图
    在这里插入图片描述

5.2 MapReduce编程实现

5.2.1 相关库安装
sudo pip3 install mrjob
5.2.2 Python实现wordcount案例(了解)
  1. 新建words.txt,并写入如下内容

    hello world
    hello tarena
    I am world and tarena
    I love tarena world
    
  2. python代码实现wordcount

    from mrjob.job import MRJob
    
    class WordCount(MRJob):
    #重写mapper   reducer  方法 完成自己的需求, hive可以实现sql转方法的实现
    
        def mapper(self, _, line):
        #def mapper(self, key, line):
            # _: key,每行行首的偏移量,一般不使用,这里写成_
            # line: 每行的内容
            
            #重写功能
            for word in line.split():
                yield word, 1
    
        # shuffle 和 sort 过程不用关注,hadoop自动去做,看不到
        # hi 1 1
        # hello 1 1 1 1
        # world 1
    
        def reducer(self, key, values):
            # key: map shuffle和sort之后的单词
            # values: 每个单词出现次数的序列
            yield key, sum(values)
    
    if __name__ == '__main__':
        WordCount.run()
    
  3. 运行MapReduce程序的两种方式

    [1]本地模式(一次启动多个进程)
        python3 wordCount.py -r local word.txt #本地运行-r local,不会排序
        
    [2]Hadoop模式 (比较消耗内存)
        python3 wordCount.py -r hadoop word.txt	#会排序
        
    "I"     2
    "am"    1
    "and"   1
    "hello" 2
    "love"  1
    "tarena"        3
    "world" 3
    
    [1]本地模式(一次启动多个进程)
        python3 wordCount.py -r local word.txt #本地运行-r local,不会排序
        
    [2]Hadoop模式 (比较消耗内存)
        python3 wordCount.py -r hadoop word.txt	#会排序
        
    "I"     2
    "am"    1
    "and"   1
    "hello" 2
    "love"  1
    "tarena"        3
    "world" 3
    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络协议常见问题

网络协议常见问题 OSI&#xff08;Open Systems Interconnection&#xff09;模型OSI 封装 TCP/IP协议栈IP数据报的报头TCP头格式UDP头格式TCP (3-way shake)三次握手建立连接&#xff1a;为什么三次握手才可以初始化 Socket、序列号和窗口大小并建立 TCP 连接。每次建立TCP连接…

蓝桥杯递推与递归法|斐波那契数列|数字三角形|42点问题|数的计算|数的划分(C++)

递归是用来做dfs&#xff0c;是搜索算法的基础 递推是用来做dp部分&#xff0c;及部分其他算法&#xff0c;复杂度较低&#xff0c;不会出现爆栈问题递推法&#xff1a; 递推法是一种在数学和其他领域广泛应用的重要方法&#xff0c;它在计算机科学中被用作一种关键的数值求解…

自动化运维利器Ansible基础(环境部署)

Ansible 介绍及安装 1. 介绍 Ansible 是⼀个 IT ⾃动化⼯具。它能配置系统、部署软件、编 排更复杂的 IT 任务&#xff0c;如连续部署或零停机时间滚动更新。 Ansible ⽤ Python 编写&#xff0c;尽管市⾯上已经有很多可供选择的 配置管理解决⽅案&#xff08;例如 Salt、Pupp…

OpenAI GPT LLMs 高级提示词工程方法汇总

原文地址&#xff1a;An Introduction to Prompt Engineering for OpenAI GPT LLMs Github&#xff1a;Prompt-Engineering-Intro 2023 年 3 月 2 日 提示工程指南 | Prompt Engineering Guide Naive 提示词&#xff1a;带有提示的情感分类器 prompt Decide whether a T…

复合查询【MySQL】

文章目录 复合查询测试表 单表查询多表查询子查询单行子查询多行子查询IN 关键字ALL 关键字ANY 关键字 多列子查询 合并查询 复合查询 测试表 雇员信息表中包含三张表&#xff0c;分别是员工表&#xff08;emp&#xff09;、部门表&#xff08;dept&#xff09;和工资等级表&…

GEE:基于ERA5数据集(U和V风速分量)计算风速的幅值和风向

作者:CSDN @ _养乐多_ 本文将介绍使用Google Earth Engine (GEE)平台提供的API加载ERA5月度数据集,该数据集包含了从1979年至今的全球月度气象数据。然后,定义了一个数据计算函数,用于将U和V风速分量转换为风速的幅值和风向。 结果如下图所示, 文章目录 一、核心函数1…

基于单片机的语音存储与回放系统设计

目 录 摘 要 I Abstract II 引 言 1 1 控制系统设计 3 1.1 系统方案设计 3 1.2 系统工作原理 4 1.2.1 单片机的选择 4 1.2.2 语音芯片的选择 5 2 硬件电路设计 6 2.1 时钟电路 6 2.2 复位电路 6 2.3 显示电路 7 2.4 电源电路 7 2.5 按键模块电路 8 2.6 LM386功放电路 8 2.7 总…

基于深度学习YOLOv8+Pyqt5的抽烟吸烟检测识别系统(源码+跑通说明文件)

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;39抽烟 获取完整源码源文件4000张已标注的数据集配置说明文件 可有偿59yuan一对一远程操作跑通 效果展示 基于深度学YOLOv8PyQt5的抽烟吸烟检测识别系统&#xff08;完整源码跑通说明文件&#xff09; 各文件说明 模型评价…

Seurat 中的数据可视化方法

本文[1]将使用从 2,700 PBMC 教程计算的 Seurat 对象来演示 Seurat 中的可视化技术。您可以从 SeuratData[2] 下载此数据集。 SeuratData::InstallData("pbmc3k")library(Seurat)library(SeuratData)library(ggplot2)library(patchwork)pbmc3k.final <- LoadData(…

【机器学习300问】31、不平衡数据集如何进行机器学习?

一、什么是不平衡的数据集&#xff1f; &#xff08;1&#xff09;认识不平衡数据 假如你正在管理一个果园&#xff0c;这个果园里主要有两种水果——苹果和樱桃。如果苹果树有1000棵&#xff0c;而樱桃树只有10棵&#xff0c;那么在收集果园的果实时&#xff0c;你会得到大量…

RocketMQ架构详解

文章目录 概述RocketMQ架构rocketmq的工作流程Broker 高可用集群刷盘策略 概述 RocketMQ一个纯java、分布式、队列模型的开源消息中间件&#xff0c;前身是MetaQ&#xff0c;是阿里研发的一个队列模型的消息中间件&#xff0c;后开源给apache基金会成为了apache的顶级开源项目…

全栈的自我修养 ———— css中常用的布局方法flex和grid

在项目里面有两种常用的主要布局:flex和grid布局&#xff08;b站布局&#xff09;&#xff0c;今天分享给大家这两种的常用的简单方法&#xff01; 一、flex布局1、原图2、中心对齐3、主轴末尾或者开始对其4、互相间隔 二、grid布局1、基本效果2、加间隔3、放大某一个元素 一、…

Nginx请求转发和Rewrite的URL重写及重定向的功能实现移动端和PC端前端服务转发和重定向配置。

应用场景说明一 应用系统分pc端和微信小程序&#xff0c;移动端和pc端分别申请二级子域名&#xff0c;通过Nginx域名解析匹配&#xff0c;将web访问统一转发至对应的域名请求中。部分配置如下所示&#xff1a; 1、WEB访问统一入口域名解析转发配置&#xff0c;PC端和移动端根域…

【论文整理】自动驾驶场景中Collaborative Methods多智能体协同感知文章创新点整理

Collaborative Methods F-CooperV2VNetWhen2commDiscoNetAttFusionV2X-ViTCRCNetCoBERTWhere2commDouble-MCoCa3D 这篇文章主要想整理一下&#xff0c;根据时间顺序这些文章是怎么说明自己的创新点的&#xff0c;又是怎么说明自己的文章比别的文章优越的。显然似乎很多文章只是…

数据结构与算法:链式二叉树

上一篇文章我们结束了二叉树的顺序存储&#xff0c;本届内容我们来到二叉树的链式存储&#xff01; 链式二叉树 1.链式二叉树的遍历1.1二叉树的前序&#xff0c;中序&#xff0c;后序遍历1.2 三种遍历方法代码实现 2. 获取相关个数2.1获取节点个数2.2获取叶节点个数2.3 获取树的…

前端请求到 SpringMVC 的处理流程

1. 发起请求 客户端通过 HTTP 协议向服务器发起请求。 2. 前端控制器&#xff08;DispatcherServlet&#xff09; 这个请求会先到前端控制器 DispatcherServlet&#xff0c;它是整个流程的入口点&#xff0c;负责接收请求并将其分发给相应的处理器。 3. 处理器映射&#xf…

数据库-多表查询

外连接与内连接 -- 查询部门及所属部门名称&#xff0c;隐式内连接 select tb_emp.name,tb_dept.name from tb_emp,tb_dept where tb_emp.dept_idtb_dept.id;-- 起别名 select e.name,q.name from tb_emp e,tb_dept q where e.dept_idq.id;-- 外连接 select tb_emp.name,tb_dep…

GEE图像可视化常用函数

目录 图层操作Map.addLayer&#xff08;&#xff09;Map.centerObject&#xff08;&#xff09; 直方图ui.Chart.image.histogram&#xff08;&#xff09; 趋势线ui.Chart.image.series&#xff08;&#xff09; 图层操作 Map.addLayer&#xff08;&#xff09; Map.addLaye…

python并发编程:异步IO(Asynchronous I/O)

异步IO(Asynchronous I/O) Linux下的asynchronous IO其实用得不多&#xff0c;从内核2.6版本才开始引入。先看一下它的流程&#xff1a; 用户进程发起read操作之后&#xff0c;立刻就可以开始去做其它的事。而另一方面&#xff0c;从kernel的角度&#xff0c;当它受到一个asyn…

RocketMQ、Kafka、RabbitMQ 消费原理,顺序消费问题【图文理解】

B站视频地址 文章目录 一、开始二、结果1、RocketMQ 消费关系图1-1、queue和consumer的关系1-2、consumer 和线程的关系 2、Kafka 消费关系图1-1、partitions和consumer的关系1-2、consumer 和线程的关系 3、RabbitMQ 消费关系图1-1、queue和consumer的关系1-2、consumer 和线程…