首页 > 其他分享 >Hadoop2伪分布式安装、分布式安装

Hadoop2伪分布式安装、分布式安装

时间:2023-10-13 09:25:02浏览次数:41  
标签:配置 datanode hadoop dfs Hadoop Hadoop2 namenode 安装 分布式

最近有观看我主讲的《Hadoop基础与演练》课程的同学问到Hadoop环境到底应该怎么安装。Hadoop的安装其实非常的简单,网上有很多教程,官网也有示例。但是可能部分同学对于linux不太熟悉,导致安装的时候会遇到各种问题,打击学习激情。本文就来详细的讲解一下如何配置Hadoop2的伪分布式环境,帮助我们对其进行学习。

注:大家还是要学习一些linux基本命令,用到的时候很多


接下来我们进入正题,安装配置伪分布式的Hadoop集群到底分几步?

  1. 配置免密登录
  2. 配置JDK环境
  3. 安装配置Hadoop
  4. Hadoop NameNode格式化及运行测试

首先,我们下载JDK的安装包Hadoop的安装包(这里我们选择的是2.7.5版本,本教程适用与2.x版本 诸如 2.6.x 2.7.x 都支持)。

用户可以适用默认用户,也可以添加一个新的用户如hadoop用户进行部署安装。

# Ubuntu添加新用户
sudo useradd -m hadoop -s /bin/bash # 添加hadoop用户
sudo passwd hadoop # 配置hadoop用户的密码,需要输入两次
sudo adduser hadoop sudo #为hadoop添加管理员权限
# Centos添加新用户
useradd -m hadoop -s /bin/bash # 添加hadoop用户
passwd hadoop # 配置hadoop用户的密码,需要输入两次
visudo #打开配置文件 在最后一行加入 hadoop ALL=(ALL) ALL 并保存。  为hadoop添加管理员权限

配置免密登录

ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  # 加入授权

注:如果执行ssh-keygen报错,说明未安装openssh服务,首先进行安装再进行免密配置,安装方式:

# Ubuntu安装openssh
sudo apt-get install openssh-server
# Centos安装openssh
sudo yum install openssh-clients
sudo yum install openssh-server

配置完成后,执行ssh localhost 命令可以不用输入密码即可登录为配置成功。效果如下图所示:
图片描述

配置JDK环境

当我们下载完JDK的安装包之后,我们将jdk安装到/usr/local/jdk 这个目录。

cd jdk-download-home # 跳转到你下载的jdk的目录,将jdk-download-home替换为你的下载目录,比如/home/hadoop/downloads

tar zxvf jdk-pkg-name # 解压jdk 将jdk-pkg-name替换为你下载的jdk名字。比如jdk-8u151-linux-x64.tar.gz

sudo mv jdk-dir /usr/local/jdk # 将解压后的jdk目录移动到/usr/local/下并重命名为jdk。   将jdk-dir替换为你解压后的目录。比如jdk-8u151-linux-x64

JDK的安装我们已经完成了,接下来就是配置环境变量。

vim ~/.bashrc # 打开环境变量配置文件,添加下面的配置
# java环境变量配置
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
# 配置完成后 执行下面命令是配置生效
source ~/.bashrc

接下来我们检验一下我们的Java环境是否配置成功,我们执行java -version 可以看到java相关的信息即可。如下图所示:
图片描述

安装配置Hadoop

当我们下载完Hadoop的安装包之后,我们将hadoop安装到/usr/local/hadoop 这个目录。

cd hadoop-download-home # 跳转到你下载的hadoop的目录,将hadoop-download-home替换为你的下载目录,比如/home/hadoop/downloads

tar zxvf hadoop-pkg-name # 解压jdk 将hadoop-pkg-name替换为你下载的hadoop名字。比如hadoop-2.7.5.tar.gz

sudo mv hadoop-dir /usr/local/hadoop # 将解压后的hadoop目录移动到/usr/local/下并重命名为hadoop。   将hadoop-dir替换为你解压后的目录。比如hadoop-2.7.5

接下来我们对hadoop进行一些配置,使其能以伪分布式的方式运行。
我们进入到hadoop的配置文件所在的目录

cd /usr/local/hadoop/etc/hadoop
  1. 配置hadoop-env.sh

在该文件内配置JAVA_HOME 如图所示:
图片描述
将JAVA_HOME设置为我们自己的jdk安装路径即可

  1. 配置hdfs-site.xml

将hdfs-site.xml的内容改成下面的配置。

<configuration>
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/home/jixin/hadoop_data/dfs/name</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/home/jixin/hadoop_data/dfs/data</value>
</property>
</configuration>
dfs.replication # 为文件保存副本的数量
dfs.namenode.name.dir # 为hadoop namenode数据目录,改成自己需要的目录(不存在需新建)
dfs.datanode.data.dir # 为hadoop datanode数据目录,改成自己需要的目录(不存在需新建)
  1. 配置core-site.xml

将core-site.xml的内容改成下面的配置。

<configuration>
<property>
    <name>hadoop.tmp.dir</name>
    <value>file:/home/jixin/hadoop_data</value>
</property>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://0.0.0.0:9000</value>
</property>
</configuration>
hadoop.tmp.dir # hadoop 缓存目录,更改为自己的目录(不存在需创建)
fs.defaultFS # hadoop fs 监听端口配置

如果我们只需要HDFS,那么我们的配置到此就可以结束了,如果我们需要用到Yarn,我们还需要做yarn相关的配置。

  1. 配置mapred-site.xml

将mapred-site.xml的内容改成下面的配置。

<configuration>
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
</configuration>
  1. 配置yarn-site.xml

将yarn-site.xml的内容改成下面的配置。

<configuration>
<!-- Site specific YARN configuration properties -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
</configuration>

Hadoop格式化及启动

经过前面的配置我们的hadoop基础配置已经完成了,接下来就是见证奇迹的时刻了,我们需要对Hadoop的namenode进行格式化,然后启动hadoop dfs服务。

  1. NameNode格式化
    我们跳转到hadoop的bin目录,并执行格式化命令
cd /usr/local/hadoop/bin
./hdfs namenode -format

执行结果如下图所示,当exit status 为0时,则为格式化成功。
图片描述

此时我们的hadoop已经格式化成功了,接下来我们去启动我们hadoop。

我们跳转到hadoop下的sbin目录

cd /usr/local/hadoop/sbin
./start-dfs.sh # 启动HDFS
./start-yarn.sh # 启动YARN

当我们执行./start-dfs.sh 如下图所示:
图片描述

到现在我们的伪分布式hadoop集群已经部署成功了,如果大家再启动hadoop的时候遇到了问题,大家可以查看对应的log文件查看是由什么问题引起的。
一般的问题比如,未设置JAVA_HOME hadoopdata目录不存在,或者无权限等等。

相信大家肯定可以顺利的配置出自己的伪分布式hadoop集群环境。然后开始愉快的学习。

注:其实单机版和分布式版的部署 在于配置文件的不同,其他的都一样,大家可以自己了解一下。



链接:https://www.imooc.com/article/24911

 

Hadoop完全分布式集群安装

前面我们配置了伪分布式的Hadoop集群供我们学习Hadoop的基础操作,当我们对Hadoop的操作熟练之后肯定要部署到正式的环境,这个时候肯定就需要部署完全分布式的环境了。那么完全分布式的Hadoop集群如何配置呢?

我们配置伪分布式Hadoop集群的时候提到我们具体操作的步骤为:

  1. 配置免密登录
  2. 配置JDK环境
  3. 安装配置Hadoop
  4. Hadoop NameNode格式化及运行测试

当我们配置完全分布式的时候就意味着我们需要将 1 2 3 步循环N次,N等于你集群的机器数量。比如我们要配置一个拥有3个节点的小集群,我们需要在三台机器上都进行免密配置,JDK安装,Hadoop配置等等。最终进行格式化并且启动我们的集群。

前期准备

选择三台机器搭建我们的集群,我们将其分别命名为namenode-1,datanode-1,datanode-2
将它们的ip及hostname分别添加到各个机器的/etc/hosts文件:

192.168.1.x namenode-1
192.168.1.x datanode-1
192.168.1.x datanode-2

然后参考之前的文章进行免密,JDK配置。

Hadoop配置

hadoop的环境变量及hadoop-env.sh参考之前的文章。这里我们主要会提到hdfs-site.xml和core-site.xml。分布式的Hadoop集群我们有两种配置,一种是跟我们伪分布式集群一样具有SecondaryNameNode的。一种是HA(高可用)也就是具有两个NameNode的。


注:SecondaryNameNode的目的在于为Hadoop提供一个CheckPoint节点,它只是NameNode的一个助手节点,来帮助NameNode更好的工作,防止数据的丢失。它不能取代NameNode,也不是NameNode的备份。

具有SecondaryNameNode的分布式Hadoop集群配置

这类集群的hdfs-site.xml和core-site.xml配置与之前的伪分布式配置是一致的,大家可以参考一下。需要注意的是 我们的slaves文件,之前默认是只有localhost。现在我们有两个datanode节点所以我们的slaves文件要改为:

datanode-1
datanode-2

slaves位于Hadoop安装目录的etc/hadoop/目录下,每行都是datanode机器的hostname。将slaves更新到每个节点,同时在各个节点创建相关的目录即可。启动部分大家参考前面内容。

HA高可用的Hadoop分布式配置

假设我们拥有五台机器,分别为namenode-1,namenode-2,datanode-1,datanode-2,datanode-3。
zookeeper部署在datanode1,2,3上。

hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/hadoop/hadoop-2.7.3/tmp/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/hadoop/hadoop-2.7.3/tmp/data</value>
    </property>

    <!-- HA 相关配置 -->
        <!-- 集群名称,可以随意起名称  -->
    <property>
        <name>dfs.nameservices</name>
        <value>clustername</value>
    </property>
        <!-- 定义namenode节点名称,名字任意,属性名与集群名称有关 -->
    <property>
        <name>dfs.ha.namenodes.clustername</name>
        <value>nn-1,nn-2</value>
    </property>
        <!--    定义相关端口 -->
    <property>
        <name>dfs.namenode.rpc-address.clustername.nn-1</name>
        <value>namenode-1:9000</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.clustername.nn-2</name>
        <value>namenode-2:9000</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.clustername.nn-201</name>
        <value>namenode-1:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.clustername.nn-155</name>
        <value>namenode-2:50070</value>
    </property>
        <!--    定义journalNode -->
    <property>                                                   
        <name>dfs.namenode.shared.edits.dir</name>

 <value>qjournal://datanode-1:8485;namenode-1:8485;namenode-2:8485/clustername</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.clustername</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>shell(/bin/true)</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/home/hadoop/hadoop-2.7.3/tmp/qjournal</value>
    </property>
    <property>
        <name>dfs.ha.automatic-failover.enabled.clustername</name>
        <value>true</value>
    </property>
        <!--    定义zookeeper集群 -->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>datanode-1:2181,datanode-2:2181,datanode-3:2181</value>
    </property>
</configuration>

core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/hadoop-2.7.3/tmp</value>
    </property>
        <!--    与集群名称保持一致 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://clustername</value>
    </property>
</configuration>

然后更改slaves文件:

datanode-1
datanode-2
datanode-3

启动高可用的Hadoop集群:

# 格式化zk集群
./bin/hdfs zkfc -formatZK
# 格式化namenode
./bin/hdfs namenode -format
# 启动namenode
./bin/hdfs start-dfs.sh start
# 切换到root用户启动datanode
./bin/hdfs start-secure-dns.sh

# 以上命令在namenode上执行,执行完通过jps命令可见如下进程

# namenode机器
6163 DFSZKFailoverController
6289 NameNode
# datanode机器
6037 DataNode
5787 JournalNode

Yarn HA配置

mapred-site.xml

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

yarn-site.xml

<?xml version="1.0"?>
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>namenode-1</value>
        </property> 
        <property>
            <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property>
        <name>yarn.resourcemanager.connect.retry-interval.ms</name>
        <value>2000</value>
    </property>

    <!-- HA -->
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>mytest-yarn</value>
    </property>                         
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>nn1,nn2</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.nn1</name>
        <value>namenode-1</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.nn2</name>
        <value>namenode-2</value>
        </property>                                         
        <property>
            <name>yarn.resourcemanager.webapp.address.nn1</name>
            <value>namenode-1:8088</value>      
    </property>                  
    <property>
        <name>yarn.resourcemanager.webapp.address.nn2</name>
        <value>namenode-2:8088</value>  
    </property>
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>datanode-1:2181,datanode-2:2181,datanode-3:2181</value>                      
    </property>
</configuration>

希望对大家有所帮助。如果大家有什么问题,可以去Hadoop的官网查看相关的配置示例。

https://www.imooc.com/article/27249

标签:配置,datanode,hadoop,dfs,Hadoop,Hadoop2,namenode,安装,分布式
From: https://www.cnblogs.com/wq-9/p/17761110.html

相关文章

  • java的卸载和安装
    java的卸载删除安装目录删除JAVA_HOME删除path下关于java的目录检测是否删除:java-versionJava的安装百度搜索JDK8,找到下载地址同意协议下载电脑安装版本双击安装记住安装的路径配置环境变量我的电脑——>右击——>属性——>高级系统设置环境变量......
  • win Server系统安装“.NET Framework 3.5”
    Win2012、Win2016中.NETFramework版本分别是4.5与4.6,因此需要手动安装 .NETFramework3.5。(Win2012和Win2016中的.NET3.5不通用)iso镜像sources/sxs目录中有 .NETFramework3.5安装文件(路径:sources/sxs)将文件单独放如一个目录当中,并在系统中调用   ......
  • Solidworks流体仿真插件安装及案例分析
    Solidworks流体仿真插件安装及案例分析1流体仿真插件的安装如图1所示,安装时勾选SolidworksFlowSimuation模块,一路“下一步”安装完毕。完成安装后打开软件,图2所示,点击Solidworks插件按钮,找到SolidworksFlowSimuation按钮,双击可打开说明插件安装成2案例分析2.1案例背景......
  • 群辉安装套件qbittorrent 通过quickconnect连接配置,
    引用, 没有公网IP用Quickconnect访问NAS的套件-群晖-就爱NAS(92nas.com)该配置是transmission通过quickconnect连接,需要qbittorrent通过quickconnect连接的话需要配置如下以qbittorrent 为例,qbittorrent 的访问端口是8085:通过SSH登录群晖,输入命令sudo-i回车。......
  • 分布式场景
    一、分布式文件系统常用的分布式文件系统:HDFS(HadoopDistributedFileSystem)HDFS是ApacheHadoop生态系统中的分布式文件系统,用于存储和管理大规模数据集。它是为了支持大数据处理和分析而设计的,具有高容错性、高可靠性和高可扩展性的特点。它采用了主从架构,由一个......
  • tracepro安装教程
    tracepro中文破解版是一款专业好用的光学仿真软件,该软件以ACISsolidmodelingkernel为基本的实体模型,该软件自发布以来被广泛地应用于照明系统、光学分析、辐射度分析及光度分析等领域,软件提供了丰富实用的功能模块,可以有效地建立括照明系统、灯具及固定照明、汽车照明系统(前头......
  • 安装NVIDA驱动时,出现your appear to running an x server;please exit x before insta
    安装NVIDA驱动时,出现yourappeartorunninganxserver;pleaseexitxbeforeinstalling.forfurtherdetails这个错误主要是由于安装远程控制lightgm导致X-server启动。解决办法:sudochmod+xNVIDIA-Linux-X86_64-440.100.runsudo./NVIDIA-Linux-X86_64-440.100.run......
  • [node]安装node后,可以在控制台进行简单的js文件测试
    1.在Windows操作系统安装好node之后,可以在任意文件地址,按下shift+鼠标右键,打开WindowsPowerShell。  或者在VSCode中,右键选择某文件夹,选择“在集成终端中打开”。2.输入node,可以查看安装好的node版本。3.按下ctrl+d,退出node。 在js文件所在目录打开终......
  • Debian12安装elasticsearch实践及问题解决方案
    一、安装安装其实很简单,直接上官网链接:下载地址,官网提供了所有安装方式,总一款适合你。我的目标系统是Debian12,包管理是apt-get,所以就以这个为示例,仅供参考。1、先选择需要安装的版本2、导入ElasticsearchPGP密钥wget-qO-https://artifacts.elastic.co/GPG-KEY-elastic......
  • nvm的安装及使用(入门级)
    1从官网下载压缩包到本地下载地址:https://github.com/coreybutler/nvm-windows/releases 2配置2.1 settings.txt配置(1)下载到本地后并解压,本人解压到D:\ProgramFiles\nvm下。下图是本人安装配置好,并用nvm安装了12.22.1和16.14.0版本的node.js后的目录结构,故你解压后看......