Hadoop完整搭建过程(二):伪分布模式

Stella981
• 阅读 710

1 伪分布模式

伪分布模式是运行在单个节点以及多个Java进程上的模式。相比起本地模式,需要进行更多配置文件的设置以及sshYARN相关设置。

2 Hadoop配置文件

修改Hadoop安装目录下的三个配置文件:

  • etc/hadoop/core-site.xml
  • etc/hadoop/hdfs-site.xml
  • etc/hadoop/hadoop-env.sh

2.1 core-site.xml

首先修改core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
</configuration>
  • fs.defaultFS设置的是HDFS的地址,设置运行在本地的9000端口上
  • hadoop.tmp.dir设置的是临时目录,如果没有设置的话默认在/tmp/hadoop-${user.name}中,系统重启后会导致数据丢失,因此修改这个临时目录的路径

接着创建该临时目录:

mkdir -p /usr/local/hadoop/tmp

2.2 hdfs-site.xml

接着修改hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

dfs.replication设置的是HDFS存储的临时备份数量,因为伪分布模式中只有一个节点,所以设置为1

2.3 hadoop-env.sh

修改该文件添加JAVA_HOME环境变量,就算JAVA_HOME

  • ~/.bashrc
  • ~/.bash_profile
  • /etc/profile

等中设置了,运行时也是会提示找不到JAVA_HOME,因此需要手动在hadoop-env.sh中设置JAVA_HOME

Hadoop完整搭建过程(二):伪分布模式

3 本地无密码ssh连接

下一步需要设置本地无密码ssh连接,首先先检查确保开启sshd服务:

systemctl status sshd

开启后可以直接localhost连接:

ssh localhost

输入自己的用户密码后就可以访问了,但是这里需要的是无密码连接,因此配置密钥认证连接的方式:

ssh-keygen -t ed25519 -a 100 
cat ~/.ssh/id_25519.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

这里生成公私钥后把公钥添加到authorized_keys中,并且修改权限,需要注意600权限,只能本用户有写权限。

然后直接ssh localhost就可以连接本地主机了。

4 运行

4.1 格式化HDFS

这里以单一节点的模式运行,首先格式化HDFS

# HADOOP为Hadoop安装目录
HADOOP/bin/hdfs namenode -format

格式化是对HDFS中的DataNode进行分块,统计所有分块后的初始元数据,存储在NameNode中。

格式化成功后会在上面配置文件中设置的临时目录中生成dfs目录,如下所示:

Hadoop完整搭建过程(二):伪分布模式

里面只有一个目录:dfs/name/current,其中tmp/dfs/name/current的文件如下:

Hadoop完整搭建过程(二):伪分布模式

文件说明如下:

  • fsimageNameNode元数据在内存满后,持久化保存到的文件
  • fsimage*.md5:校验文件,用于校验fsimage的完整性
  • seen_txid:存放transactionID文件,format之后为0,表示NameNode里面的edits_*文件的尾数
  • VERSION:保存创建时间,namespaceIDblockpoolIDstorageTypecTimeclusterIDlayoutVersion

关于VERSION的说明:

  • namespaceIDHDFS唯一标识符,在HDFS首次格式化后生成
  • blockpoolID:标识一个block pool,跨集群全局唯一
  • storageType:存储什么进程的数据结构信息
  • cTime:创建时间
  • clusterID:系统生成或指定的集群ID,可以使用-clusterid指定
  • layoutVersion:表示HDFS永久性数据结构版本的信息

4.2 启动NameNode

HADOOP/sbin/start-dfs.sh

然后可以通过

localhost:9870

访问NameNode

Hadoop完整搭建过程(二):伪分布模式

4.3 测试

生成输入目录,并使用配置文件作为输入:

bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/USER_NAME # USER_NAME为您的用户名
bin/hdfs dfs -mkdir input
bin/hdfs dfs -put etc/hadoop/*.xml input

测试:

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar grep input output 'dfs[a-z.]+'

获取输出:

bin/hdfs dfs -get output output # 复制输出到output目录
cat output/*

Hadoop完整搭建过程(二):伪分布模式

停止:

sbin/stop-hdfs.sh

5 使用YARN配置

除了可以将单个节点以伪分布模式启动,还可以通过YARN统一调度,只需要适当修改配置文件。

5.1 配置文件

修改以下文件:

  • HADOOP/etc/hadoop/mapred-site.xml
  • HADOOP/etc/hadoop/yarn-site.xml

5.1.1 mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>
  • mapreduce.framework.name指定了MapReduce运行在YARN
  • mapreduce.application.classpath指定了类路径

5.1.2 yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>
  • yarn.nodemanager.aux-services:运行在NodeManager上运行的附属服务
  • yarn.nodemanager.env-whitelist:环境变量通过从NodeManagers的容器继承的环境属性

5.2 运行

sbin/start-yarn.sh

运行后就可以通过

localhost:8088

访问:

Hadoop完整搭建过程(二):伪分布模式

停止:

sbin/stop-yarn.sh

6 参考

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Mac部署spark2.4.4
环境信息1.操作系统:macOSMojave10.14.62.JDK:1.8.0\_211(安装位置:/Library/Java/JavaVirtualMachines/jdk1.8.0\_211.jdk/Contents/Home)前提条件请参考《Mac部署hadoop3(伪分布式)》(https://www
Stella981 Stella981
3年前
Hadoop完整搭建过程(三):完全分布模式(虚拟机)
1完全分布模式完全分布模式是比本地模式与伪分布模式更加复杂的模式,真正利用多台Linux主机来进行部署Hadoop,对集群进行规划,使得Hadoop各个模块分别部署在不同的多台机器上,这篇文章介绍的是通过三台虚拟机进行集群配置的方式,主要步骤为:准备虚拟机:准备虚拟机基本环境ipHost配置:手
Stella981 Stella981
3年前
Hadoop学习笔记:Hadoop安装(本地安装)
最近开始研究大数据这块,现在从最基础的Hadoop开始,后续将逐渐学习Hadoop整个生态圈的各个部分组件。Hadoop安装分为本地安装、伪分布式、完全分布式和高可用分布式,这里为个人学习用(实际情况是本人没有那么多机器,装虚拟机的话,内存可能也不够,T\_T),仅涉及到本地安装和伪分布式安装。环境准备操作系统信
Stella981 Stella981
3年前
Hadoop压缩
一、Hadoop压缩简介1、hadoop的3个阶段(1)分布式文件系统HDFS(2)分布式编程框架MapReduce(3)yarn框架2、Hadoop数据压缩MR操作过程中进行大量数据传输。压缩技术能够有效的减少底层存储(HDFS)读写字
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Hadoop伪分布式环境搭建之Linux操作系统安装
Hadoop伪分布式环境搭建之Linux操作系统安装本篇文章是接上一篇《超详细hadoop虚拟机安装教程(附图文步骤)》,上一篇有人问怎么没写hadoop安装。在文章开头就已经说明了,hadoop安装会在后面写到,因为整个系列的文章涉及到每一步的截图,导致文章整体很长。会分别先对虚拟机的安装、Linux系统安装进行介绍,然后才会写到had
Stella981 Stella981
3年前
Hadoop完整搭建过程(一):本地模式
1本地模式本地模式是最简单的模式,所有模块都运行在一个JVM进程中,使用本地文件系统而不是HDFS。本地模式主要是用于本地开发过程中的运行调试用,下载后的Hadoop不需要设置默认就是本地模式。2准备工作笔者喜欢把JDK放在/usr/local下,运行前请确保设置了JAVA_HOME,注
Wesley13 Wesley13
3年前
00_设计模式之语言选择
设计模式之语言选择设计模式简介背景设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的