Hadoop系列文章 Hadoop部署

在这里插入图片描述
Hadoop分为三种部署方式

  • Standalone Operation(单节点集群):默认情况下,Hadoop被配置为作为单个Java进程以非分布式模式运行。这对于调试非常有用。
  • Pseudo-Distributed Operation(伪分布式):在单节点上以伪分布式模式运行,其中每个Hadoop守护进程运行在单独的Java进程中。
  • 分布式部署Fully-Distributed Operation:真集群部署
构件版本
Hadoop3.2.1
CentOS7
Java1.8
IDEA2018.3
Gradle4.8
Springboot2.1.2 RELEASE

Apache Hadoop 3.2.1 单节点部署

Java安装

因为Hadoop是基于Java的,所以一个Java环境是不能少的。
CentOS7 安装JDK1.8

下载安装包

Apache Hadoop 官方下载页

Apache Hadoop 3.2.1 binary 下载地址

在这里插入图片描述

在服务器中解压到指定目录

一般我们将Hadoop放到/usr/local/目录下

# tar -zxvf hadoop-3.2.1.tar.gz -C /usr/local/hadoop-3.2.1

在这里插入图片描述

配置环境变量

配置文件/etc/profile

export JAVA_HOME=/usr/java/default
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HADOOP_HOME=/usr/local/hadoop-3.2.1/

export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

更改立即生效:source /etc/profile
在这里插入图片描述

HDFS Shell命令一览

HDFS Shell 命令官方文档

在这里插入图片描述

hadoop fs … 与 hdfs dfs …命令作用一样的,因为它们在shell里被翻译成同一个命令。

测试Hadoop安装成果

  $ mkdir input
  $ cp etc/hadoop/*.xml input
  $ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
  $ cat output/*

Apache Hadoop 3.2.1 伪分布式部署

hadoop环境配置文件

修改配置文件hadoop-env.sh
大概54行的位置

export JAVA_HOME=/usr/java/default

配置文件设置

配置文件etc/hadoop/core-site.xml:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
        <!-- 将localhost换为自己主机的IP,不然此Hadoop将不能被另外的计算机访问
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.84.132:9000</value>
    </property>
        -->
    </property>
</configuration>

配置文件etc/hadoop/hdfs-site.xml:

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

添加HDFS操作账户

我们需要制定可以管理HDFS的账户:sbin/start-dfs.sh第一项配置项之前添加:

HDFS_NAMENODE_USER=root
HDFS_DATANODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

因为我们现在做的单节点集群所以一次把三个必要角色都加上。

设置SSH

Setup passphraseless ssh

Now check that you can ssh to the localhost without a passphrase:

  $ ssh localhost

If you cannot ssh to localhost without a passphrase, execute the following commands:

  $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
  $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  $ chmod 0600 ~/.ssh/authorized_keys

格式化HDFS

Execution
The following instructions are to run a MapReduce job locally. If you want to execute a job on YARN, see YARN on Single Node.

Format the filesystem:

  $ bin/hdfs namenode -format

Start NameNode daemon and DataNode daemon:

  $ sbin/start-dfs.sh

The hadoop daemon log output is written to the $HADOOP_LOG_DIR directory (defaults to $HADOOP_HOME/logs).

dfs的启动时间比较长,大家要耐心。

启动完毕之后,可以先访问Hadoop的web控制台http://192.168.84.132:9870/dfshealth.html#tab-overview
在这里插入图片描述
在这里插入图片描述


yarn部署

yarn作为建立在hadoop中的资源调度中心,用于承接各个计算框架分配、管理各种资源,是大数据业务线中的重要组件。

配置yarn成员:sbin/start-yarn.sh

YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root
让我们先把yarn可调度的资源范围调大一些

yarn对集群资源调度的范围默认是0.1,这是在是有些小了,特别是在单机上,这很容易引发application申请不到资源的情况。

调整yarn对资源调度的范围: etc/hadoop/capacity-scheduler.xml

  <property>
    <name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
    <value>0.6</value>
    <description>
      Maximum percent of resources in the cluster which can be used to run
      application masters i.e. controls number of concurrent running
      applications.
    </description>
  </property>

配置yarn对节点内存的管理范围

配置文件:etc/hadoop/yarn-site.xml

        <property>
                <name>yarn.nodemanager.pmem-check-enabled</name>
                <value>false</value>
        </property>
        <property>
                <name>yarn.nodemanager.vmem-check-enabled</name>
                <value>false</value>
        </property>

在节点资源不富裕的情况下,以上两个配置是很重要的,不然很可能会出现,任务运行资源申请不到的情况或者是( java.nio.channels.ClosedChannelException异常)出现。


启动yarn:

[root@node1 hadoop-3.2.1]# sbin/start-yarn.sh

对于伪分布式(单节点集群)必要的进程有:

  • NameNode
  • SecondaryNameNode
  • ResourceManager
  • NodeManager
  • DataNode
    在这里插入图片描述

查看各组件运行状态

HDFS

在这里插入图片描述

yarn

进入资源控制面板:http://192.168.84.132:8088/cluster/nodes
在这里插入图片描述

常见问题

hadoop的基础配置并不复杂,不过由于新手的误操作也可能引发一些问题。

DataNode起不来或者起来了在nodemanager里看不到

这个问题大都是因为cluster id 不一致引起的。
导致cluster id 不一致的原因主要有namenode -format 之前没有执行 stop-all.sh ,旧的cluster id 还保存在节点的磁盘上,导致hdfs与datanode之间无法建立连接。

DataNode 的Cluster Id 在文件:/tmp/hadoop-root/dfs/data/current/VERSION

#Sun Feb 23 12:30:49 EST 2020
storageID=DS-73bb1abb-6310-46ff-b975-a6c1f2c72ba5
clusterID=CID-f5f90a56-eda8-4cb4-8580-eebb7c40b3f7
cTime=0
datanodeUuid=10b54422-9b93-4a63-bc54-2d0ee76ecd89
storageType=DATA_NODE
layoutVersion=-57

对照下Hadoop控制面板中的Cluster id

在这里插入图片描述

如果确定了是双方Cluster id不一致,可以直接将 /tmp/hadoop-root/dfs/data/current/VERSION文件里的clusterid该为面板中的ID,然后重启datanode即可。


SpringBoot实现Hadoop HDFS、MapReduce 编程模型及示例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值