Hadoop伪分布模式安装

2023-05-16

Hadoop伪分布模式安装

Hadoop的运行模式分为3种
本地运行模式,伪分布运行模式,完全分布运行模式。
(1)本地模式(local mode)
这种运行模式在一台单机上运行,没有HDFS分布式文件系统,而是直接读写本地操作系统中的文件系统。在本地运行模式(local mode)中不存在守护进程,所有进程都运行在一个JVM上。单机模式适用于开发阶段运行MapReduce程序,这也是最少使用的一个模式。
(2)伪分布模式
这种运行模式是在单台服务器上模拟Hadoop的完全分布模式,单机上的分布式并不是真正的分布式,而是使用线程模拟的分布式。在这个模式中,所有守护进程(NameNode,DataNode,ResourceManager,NodeManager,SecondaryNameNode)都在同一台机器上运行。因为伪分布运行模式的Hadoop集群只有一个节点,所以HDFS中的块复制将限制为单个副本,其secondary-master和slave也都将运行于本地主机。此种模式除了并非真正意义的分布式之外,其程序执行逻辑完全类似于完全分布式,因此,常用于开发人员测试程序的执行。
(3)完全分布模式
这种模式通常被用于生产环境,使用N台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机之上。这里会存在Namenode运行的主机,Datanode运行的主机,以及SecondaryNameNode运行的主机。在完全分布式环境下,主节点和从节点会分开。

实验环境

Linux Ubuntu 14.04

实验内容

在只安装Linux系统的服务器上,安装Hadoop2.6.0伪分布模式。

实验步骤

1.此步为可选项,建议用户创建一个新用户及用户组,后续的操作基本都是在此用户下来操作。但是用户亦可在自己当前非root用户下进行操作。 创建一个用户名为liulei,并为此用户创建home目录,此时会默认创建一个与liulei同名的用户组。

sudo useradd -d /home/liulei -m liulei

为liulei用户设置密码,执行下面的语句

sudo passwd liulei

按提示消息,输入密码以及确认密码即可,此处密码设置为liulei
将liulei用户的权限,提升到sudo超级用户级别

sudo usermod -G sudo liulei

后续操作,我们需要切换到liulei用户下来进行操作。

su  liulei

2.首先来配置SSH免密码登陆
SSH免密码登陆需要在服务器执行以下命令,生成公钥和私钥对

ssh-keygen -t rsa  

此时会有多处提醒输入在冒号后输入文本,这里主要是要求输入ssh密码以及密码的放置位置。在这里,只需要使用默认值,按回车即可。

此时ssh公钥和私钥已经生成完毕,且放置在/.ssh目录下。切换到/.ssh目录下

cd ~/.ssh  

可以看到~/.ssh目录下的文件

下面在~/.ssh目录下,创建一个空文本,名为authorized_keys

touch ~/.ssh/authorized_keys  

将存储公钥文件的id_rsa.pub里的内容,追加到authorized_keys中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  

下面执行ssh localhost测试ssh配置是否正确

ssh localhost  

一次使用ssh访问,会提醒是否继续连接

后续再执行ssh localhost时,就不用输入密码了
在这里插入图片描述

3.下面首先来创建两个目录

sudo mkdir /apps  
sudo mkdir /data 

并为/apps和/data目录切换所属的用户为liulei及用户组为liulei

sudo chown -R liulei:liulei/apps  
sudo chown -R liulei:liulei/data  

两个目录的作用分别为:/apps目录用来存放安装的框架,/data目录用来存放临时数据、HDFS数据、程序代码或脚本。
执行 ls -l 命令

ls -l  

可以看到根目录下/apps和/data目录所属用户及用户组已切换为liulei:liulei

4.配置HDFS。
创建/data/hadoop1目录,用来存放相关安装工具,如jdk安装包jdk-7u75-linux-x64.tar.gz及hadoop安装包hadoop-2.6.0-cdh5.4.5.tar.gz。

mkdir -p /data/hadoop

切换目录到/data/hadoop1目录,使用wget命令,下载所需的hadoop安装包jdk-7u75-linux-x64.tar.gz及hadoop-2.6.0-cdh5.4.5.tar.gz。
注:请自行到官网下载相应的安装包。

  cd /data/hadoop
 下载 jdk-7u75-linux-x64.tar.gz  
  下载 hadoop-2.6.0-cdh5.4.5.tar.gz  

5.安装jdk。将/data/hadoop1目录下jdk-7u75-linux-x64.tar.gz 解压缩到/apps目录下。

tar -xzvf /data/hadoop1/jdk-7u75-linux-x64.tar.gz -C /apps
其中,tar -xzvf 对文件进行解压缩,-C 指定解压后,将文件放到/apps目录下。
切换到/apps目录下,我们可以看到目录下内容如下:

cd /apps/  
ls -l  

下面将jdk1.7.0_75目录重命名为java,执行:

mv /apps/jdk1.7.0_75/  /apps/java  

6.下面来修改环境变量:系统环境变量或用户环境变量。我们在这里修改用户环境变量。

sudo vim ~/.bashrc  

输入上面的命令,打开存储环境变量的文件。空几行,将java的环境变量,追加进用户环境变量中。

#java  
export JAVA_HOME=/apps/java  
export PATH=$JAVA_HOME/bin:$PATH  

输入Esc, 进入vim命令模式,输入 :wq !进行保存。
让环境变量生效。

source ~/.bashrc  

执行source命令,让java环境变量生效。执行完毕后,可以输入java,来测试环境变量是否配置正确。如果出现下面界面,则正常运行。

7.下面安装hadoop,切换到/data/hadoop1目录下,将hadoop-2.6.0-cdh5.4.5.tar.gz解压缩到/apps目录下。

cd /data/hadoop1  
tar -xzvf /data/hadoop1/hadoop-2.6.0-cdh5.4.5.tar.gz -C /apps/  

为了便于操作,我们也将hadoop-2.6.0-cdh5.4.5重命名为hadoop。

mv /apps/hadoop-2.6.0-cdh5.4.5/ /apps/hadoop  

8.修改用户环境变量,将hadoop的路径添加到path中。先打开用户环境变量文件。

sudo vim ~/.bashrc

将以下内容追加到环境变量~/.bashrc文件中。

#hadoop  
export HADOOP_HOME=/apps/hadoop  
export PATH=$HADOOP_HOME/bin:$PATH  

让环境变量生效。

source ~/.bashrc  

验证hadoop环境变量配置是否正常

hadoop version

9.下面来修改hadoop本身相关的配置。首先切换到hadoop配置目录下。

cd /apps/hadoop/etc/hadoop  

10.输入vim /apps/hadoop/etc/hadoop/hadoop-env.sh,打开hadoop-env.sh配置文件。

vim /apps/hadoop/etc/hadoop/hadoop-env.sh  

将下面JAVA_HOME追加到hadoop-env.sh文件中。

export JAVA_HOME=/apps/java  

11.输入vim /apps/hadoop/etc/hadoop/core-site.xml,打开core-site.xml配置文件。

vim /apps/hadoop/etc/hadoop/core-site.xml  

添加下面配置到与标签之间。

<property>  
    <name>hadoop.tmp.dir</name>  
    <value>/data/tmp/hadoop/tmp</value>  
</property>  
<property>  
    <name>fs.defaultFS</name>  
    <value>hdfs://0.0.0.0:9000</value>  
</property>  

这里有两项配置:
一项是hadoop.tmp.dir,配置hadoop处理过程中,临时文件的存储位置。这里的目录/data/tmp/hadoop/tmp需要提前创建。
另一项是fs.defaultFS,配置hadoop HDFS文件系统的地址。

12.输入vim /apps/hadoop/etc/hadoop/hdfs-site.xml,打开hdfs-site.xml配置文件。

vim /apps/hadoop/etc/hadoop/hdfs-site.xml  

添加下面配置到与标签之间。

<property>  
    <name>dfs.namenode.name.dir</name>  
    <value>/data/tmp/hadoop/hdfs/name</value>  
</property>  
 <property>  
     <name>dfs.datanode.data.dir</name>  
     <value>/data/tmp/hadoop/hdfs/data</value>  
 </property>  
 <property>  
     <name>dfs.replication</name>  
     <value>1</value>  
 </property>  
 <property>  
     <name>dfs.permissions.enabled</name>  
     <value>false</value>  
 </property>  

配置项说明:
dfs.namenode.name.dir,配置元数据信息存储位置;
dfs.datanode.data.dir,配置具体数据存储位置;
dfs.replication,配置每个数据库备份数,由于目前我们使用1台节点,所以,设置为1,如果设置为2的话,运行会报错。
dfs.replications.enabled,配置hdfs是否启用权限认证
另外/data/tmp/hadoop/hdfs路径,需要提前创建,所以我们需要执行

mkdir -p /data/tmp/hadoop/hdfs  

13.输入vim /apps/hadoop/etc/hadoop/slaves,打开slaves配置文件。

vim /apps/hadoop/etc/hadoop/slaves  

将集群中slave角色的节点的主机名,添加进slaves文件中。目前只有一台节点,所以slaves文件内容为:

localhost  

14.下面格式化HDFS文件系统。执行:

hadoop namenode -format  

15.切换目录到/apps/hadoop/sbin目录下。

cd /apps/hadoop/sbin/  

16.启动hadoop的hdfs相关进程。

./start-dfs.sh  

这里只会启动HDFS相关进程。

17.输入jps查看HDFS相关进程是否已经启动。

jps  

我们可以看到相关进程,都已经启动。
在这里插入图片描述
18.下面可以再进一步验证HDFS运行状态。先在HDFS上创建一个目录。

hadoop fs -mkdir /myhadoop1  

19.执行下面命令,查看目录是否创建成功。

hadoop fs -ls -R /  

以上,便是HDFS安装过程。
20.下面来配置MapReduce相关配置。再次切换到hadoop配置文件目录

cd /apps/hadoop/etc/hadoop  

21.下面将mapreduce的配置文件mapred-site.xml.template,重命名为mapred-site.xml。

mv /apps/hadoop/etc/hadoop/mapred-site.xml.template  /apps/hadoop/etc/hadoop/mapred-site.xml  

22.输入vim /apps/hadoop/etc/hadoop/mapred-site.xml,打开mapred-site.xml配置文件。

vim /apps/hadoop/etc/hadoop/mapred-site.xml  

将mapreduce相关配置,添加到标签之间。

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

这里指定mapreduce任务处理所使用的框架。
23.输入vim /apps/hadoop/etc/hadoop/yarn-site.xml,打开yarn-site.xml配置文件。

vim /apps/hadoop/etc/hadoop/yarn-site.xml  

将yarn相关配置,添加到标签之间。

<property>  
    <name>yarn.nodemanager.aux-services</name>  
    <value>mapreduce_shuffle</value>  
</property>  

这里的配置是指定所用服务,默认为空。
24.下面来启动计算层面相关进程,切换到hadoop启动目录。

cd /apps/hadoop/sbin/ 

25.执行命令,启动yarn。

./start-yarn.sh  

26.输入jps,查看当前运行的进程。
在这里插入图片描述

27.执行测试。
切换到/apps/hadoop/share/hadoop/mapreduce目录下。

  cd /apps/hadoop/share/hadoop/mapreduce  

然后,在该目录下跑一个mapreduce程序,来检测一下hadoop是否能正常运行。

hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.4.5.jar pi 3 3  

这个程序是计算数学中的pi值。当然暂时先不用考虑数据的准确性。当你看到下面流程的时候,表示程序已正常运行,hadoop环境也是没问题的。
在这里插入图片描述
至此,Hadoop 伪分布模式已经安装完成!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop伪分布模式安装 的相关文章

  • 如何为 HDFS 递归列出子目录?

    我在 HDFS 中递归创建了一组目录 如何列出所有目录 对于普通的 UNIX 文件系统 我可以使用以下命令来做到这一点 find path type d print 但我想为 HDFS 得到类似的东西 递归列出目录内容hadoop dfs
  • 在hbase中创建表

    我是 hbase 和 hadoop 的新手 无论如何 我已经成功建立了一个由3台机器组成的hadoop集群 现在我需要一些帮助来建立数据库 我有一个表 评论 包含字段 user id comments 对评论的评论 可以多个 和状态字段相同
  • 是否可以直接从文件加载镶木地板表?

    如果我有一个二进制数据文件 可以转换为 csv 格式 有什么方法可以直接从中加载镶木地板表吗 许多教程显示将 csv 文件加载到文本表 然后从文本表加载到镶木地板表 从效率的角度来看 是否可以像我已有的那样直接从二进制文件加载镶木地板表 理
  • Hive 上的自定义 MapReduce 程序,规则是什么?输入和输出怎么样?

    我被困了几天 因为我想根据我在 hive 上的查询创建一个自定义的地图缩减程序 在谷歌搜索后我发现没有太多例子 而且我仍然对规则感到困惑 创建自定义 MapReduce 程序的规则是什么 映射器和减速器类怎么样 任何人都可以提供任何解决方案
  • Hadoop setInputPathFilter错误

    我正在使用 Hadoop 0 20 2 无法更改 并且我想向我的输入路径添加一个过滤器 数据如下 path1 test a1 path1 test a2 path1 train a1 path1 train a2 我只想处理所有文件trai
  • 如何使用新的 Hadoop API 来使用 MultipleTextOutputFormat?

    我想编写多个输出文件 如何使用 Job 而不是 JobConf 来执行此操作 创建基于密钥的输出文件名的简单方法 input data type key value cupertino apple sunnyvale banana cupe
  • Sqoop Import --password-file 功能在 sqoop 1.4.4 中无法正常工作

    我使用的是hadoop 1 2 1 sqoop版本是1 4 4 我正在尝试运行以下查询 sqoop import connect jdbc mysql IP 3306 database name table clients target d
  • Hadoop:处理大型序列化对象

    我正在开发一个应用程序来使用 Hadoop 框架处理 和合并 几个大型 java 序列化对象 顺序 GB 大小 Hadoop 存储将文件块分布在不同的主机上 但由于反序列化需要所有块都存在于单个主机上 因此它会极大地影响性能 我该如何处理这
  • Curl下载到HDFS

    我有这个代码 curl o fileName csv url xargs hdfs dfs moveFromLocal 1 somePath 当我执行此代码时 curl 将请求中的值放入 fileName csv 中 该文件将移动到 HDF
  • HDP 3.1.0.0-78 升级后无法使用 ResourceManager UI 终止 YARN 应用程序

    我最近将 HDP 从 2 6 5 升级到 3 1 0 它运行 YARN 3 1 0 并且我无法再使用旧的 8088 cluster apps 或新的 8088 从 YARN ResourceManager UI 终止应用程序 ui2 ind
  • Hive查询快速查找表大小(行数)

    是否有 Hive 查询可以快速查找表大小 即行数 而无需启动耗时的 MapReduce 作业 这就是为什么我想避免COUNT I tried DESCRIBE EXTENDED 但这产生了numRows 0这显然是不正确的 对新手问题表示歉
  • 在 Hadoop 中按文件中的值排序

    我有一个文件 其中每行包含一个字符串 然后是一个空格 然后是一个数字 例子 Line1 Word 2 Line2 Word1 8 Line3 Word2 1 我需要按降序对数字进行排序 然后将结果放入文件中 为数字分配排名 所以我的输出应该
  • hadoop2.2.0追加文件发生AlreadyBeingCreatedException

    我遇到了一个关于hadoop2 2 0追加操作的问题 我通过 HDFS java API 将一些字节附加到 hdfs 文件 首先 如果在附加操作之前文件不存在 我将创建目标文件 代码如下 String fileUri hdfs hadoop
  • http://localhost:50070/ 的 hadoop Web UI 不起作用

    命令 jps 显示以下详细信息 第5144章 5464 节点管理器 5307 资源管理器 5800 Jps 显然namenode和datanode丢失了 网络用户界面位于http 本地主机 50070 http localhost 5007
  • 如何通过sparkSession向worker提交多个jar?

    我使用的是火花2 2 0 下面是我在 Spark 上使用的 java 代码片段 SparkSession spark SparkSession builder appName MySQL Connection master spark ip
  • 如何通过Python访问Hive?

    https cwiki apache org confluence display Hive HiveClient HiveClient Python https cwiki apache org confluence display Hi
  • hive 从两个数组创建映射或键/值对

    我有两个具有相同数量值的数组 它们映射为 1 1 我需要从这两个数组创建一个键 值对或映射 键 值 任何想法或提示都会有帮助 当前表结构 USA WEST NUMBER Street City 135 Pacific Irvine USA
  • Hive - 线程安全的自动递增序列号生成

    我遇到一种情况 需要将记录插入到特定的 Hive 表中 其中一列需要是自动递增的序列号 即在任何时间点都必须严格遵循 max value 1 规则 记录从许多并行的 Hive 作业插入到这个特定的表中 这些作业每天 每周 每月批量运行 现在
  • 运行时异常:java.lang.NoSuchMethodException:tfidf$Reduce.()

    如何解决这个问题 tfidf是我的主类 为什么运行jar文件后会出现这个错误 java lang RuntimeException java lang NoSuchMethodException tfidf Reduce
  • 猪的组连接等效吗?

    试图在 Pig 上完成这个任务 寻找 MySQL 的 group concat 等效项 例如 在我的表中 我有以下内容 3fields userid clickcount pagenumber 155 2 12 155 3 133 155

随机推荐

  • 线程(01)

    使用QThread启动线程 span class token macro property span class token directive hash span span class token directive keyword if
  • 线程(02)——线程同步

    线程同步 互斥锁 QMutex读写锁QReadWriteLock信号量QSemaphore条件变量 QWaitCondition span class token macro property span class token direct
  • 网口调试助手

    一 前言 xff08 1 xff09 TCP通信 xff08 2 xff09 UDP通信 UDP xff08 User Datagram Protocol 用户数据报协议 xff09 是一个轻量级 不可靠 面向数据报的 无连接的协议 xff
  • 低延迟声音效果(01)

    span class token macro property span class token directive hash span span class token directive keyword ifndef span span
  • datax 同步mongodb数据库到hive(hdfs)和elasticserch(es)

    一 同步环境 1 mongodb版本 xff1a 3 6 3 xff08 有点老了 xff0c 后来发现flinkcdc都只能监控一张表 xff0c 多张表无法监控 xff09 2 datax版本 xff1a 自己编译的DataX data
  • Qt播放音视频文件报错DirectShowPlayerService::doRender: Unresolved error code 0x80040266或DirectShowPlayerServi

    Qt播放音视频文件报错DirectShowPlayerService doRender Unresolved error code 0x80040266或DirectShowPlayerService doSetUrlSource Unre
  • 基本图形的绘制与填充

    span class token macro property span class token directive hash span span class token directive keyword ifndef span span
  • 2D坐标变换

    span class token macro property span class token directive hash span span class token directive keyword ifndef span span
  • c++中常量的两种定义方式

    常量是定以后 xff0c 在程序运行中不能被改变的标识符 C 43 43 中定义常量可以用 define const 这两种方法 例如 define PRICE 10 定义单价常量10 const int PRICE 61 10 定义单价常
  • c++中的floor, ceil, round

    xfeff xfeff 2 1 2 6 2 1 2 6 floor 不大于自变量的最大整数 2 2 3 3 ceil 不小于自变量的最小整数 3 3 2 2 round 四舍五入到最邻近的整数 2 3 2
  • 用conat修饰的类成员——常成员函数、常成员数据、常引用

    xfeff xfeff include lt iostream gt include lt cstdlib gt using namespace std class R public R int r1 int r2 m iR1 r1 m i
  • 对象的生存期——变量的生存期与可见性

    include lt iostream gt using namespace std int i 61 1 i为全局变量 xff0c 具有静态生存期 void other a b是静态局部变量 xff0c 具有静态生存期 xff0c 局部可
  • 类的友元

    include lt iostream gt include lt cstdlib gt using namespace std class Point public Point int x int y friend float dist
  • 树莓派全系列对比

    树莓派全系列参数介绍如下 xff1a 再附上 知乎 64 少数派 的一张图 xff1a Raspberry官网对过去使用的博通Soc的描述 BCM2837B0 This is the Broadcom chip used in the Ra
  • Runtime类

    xfeff xfeff 在每一个java应用程序中 xff0c 都有唯一一个RunTime对象 xff0c 该唯一的RunTime对象可通过getRunTime 方法获得 应用程序不能创建自己的RunTime队象 xff0c package
  • 动态二维数组

    include lt iostream gt include lt cstdlib gt using namespace std class Point public Point cout lt lt 34 执行无参构造函数 34 lt l
  • 获得服务器硬件信息(CPUID、硬盘号、主板序列号、IP地址等)

    获得服务器硬件信息 xff08 CPUID 硬盘号 主板序列号 IP地址等 xff09 linux命令 获取IP地址 ifconfig a 获取CPU信息 dmidecode t processor grep ID lscpu cat pr
  • MySQL备份和还原操作

    MySQL备份和还原操作 目标 备份的概念 Mysqldump备份操作 MySQL还原操作 MySQL双机热备份 概述 在数据库表丢失或损坏的情况下 xff0c 备份数据库是很重要的 如果发生系统崩溃 xff0c 能够将表尽可能丢失最少的数
  • MySQL性能优化

    MySQL性能优化 目标 调优思路系统优化mysql服务优化应用优化方式SQL语句调优启用mysql慢查询 调优思路 数据库设计与规划 以后再修该很麻烦 xff0c 估计数据量 xff0c 使用什么存储引擎数据的应用 怎样取数据 xff0c
  • Hadoop伪分布模式安装

    Hadoop伪分布模式安装 Hadoop的运行模式分为3种 xff1a 本地运行模式 xff0c 伪分布运行模式 xff0c 完全分布运行模式 xff08 1 xff09 本地模式 xff08 local mode xff09 这种运行模式