Hadoop集群部署(单机、伪分布式、完全分布式)

1 安装Hadoop
1.1查看java环境
 java -version

若未安装,请看Ubuntu安装jdk(图文)-CSDN博客

1.2下载

Apache Hadoop

1.3解压
cd ~/Downloads

ll

sudo tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local

1.4重命名
cd /usr/local

ll

sudo mv hadoop-3.1.3 hadoop313

1.5修改环境变量配置

进入配置文件:

sudo vim ~/.bashrc

添加如下配置信息:

export HADOOP_HOME=/usr/local/hadoop313 export PATH=${JAVA_HOME}/bin:$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

让配置文件生效:

source ~/.bashrc
1.6验证是否安装成功
hadoop version

出现Hadoop的版本信息就代表安装成功了

2 SSH实现免密远程登录

安装ssh:

sudo apt-get install openssh-server

生成密钥对、授权并修改文件权限

ssh-keygen -t rsa

冒号处按下enter键即可(连续按三次)

授权:

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

修改文件权限:

chmod 600 ./authorized_keys

进行远程登录,发现不用密码,输入exit即可退出远程

3Hadoop部署模式
3.1单机模式

完成上述步骤后便完成了单机模式的部署,可直接验证:

cd /usr/local/hadoop313

mkdir ./input

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

cat ./output/*

执行成功后如下图,输出了相关信息,且单词 dfsadmin 出现了1次

若重复执行需要先将 ./output 删除:

rm -r ./output
3.2伪分布式
3.2.1配置core-site.xml
cd /usr/local/hadoop313/etc/hadoop 
sudo vim core-site.xml

添加以下配置信息:

<configuration>
<property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop313/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://movie:9000</value>
    </property>
</configuration>
  1. hadoop.tmp.dir:Hadoop的临时目录,用于存储临时文件。
  2. fs.defaultFS:HDFS的NameNode地址,用于指定Hadoop文件系统的默认名称节点。
3.2.2配置hdfs-site.xml
sudo vim hdfs-site.xml

添加以下配置信息:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>movie:9870</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>movie:50090</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop313/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop313/tmp/dfs/data</value>
    </property>
</configuration>
  1. dfs.replication:设置HDFS中的副本数量,默认为3。
  2. dfs.namenode.http-address:NameNode的HTTP地址,用于客户端与NameNode进行通信。
  3. dfs.namenode.secondary.http-address:Secondary NameNode的HTTP地址,用于在主NameNode发生故障时接管其职责。
  4. dfs.namenode.name.dir:设置NameNode的数据存储目录。
  5. dfs.datanode.name.dir:设置DataNode的数据存储目录。
3.2.3配置hadoop-env.sh文件
sudo vim hadoop-env.sh

添加以下配置信息:

export JAVA_HOME=/usr/local/jdk18

完成以上配置后,执行 NameNode 的格式化:

hdfs namenode -format

启动集群:

start-dfs.sh

验证:jps命令查看,有NameNode、SecondaryNameNode、DataNode三个进程

jps

在web中查看

输入movie:9870

关闭集群:

stop-dfs.sh
3.3完全分布式

集群规划:

主节点(movie)从节点(movie1)
HDFS

DataNode

NameNode

SecondaryNameNode

DataNode
YARNNodeManager

ResourceManager

NodeManager

在主节点虚拟机先安装配置好后克隆出另一台(可根据实际情况配置多台从节点虚拟机)

进入/usr/local/hadoop313/etc/hadoop完成下面几个文件的配置:

core-site.xml、hdfs-site.xml、mapred-site.xml、 yarn-site.xml

配置core-site.xml:

<configuration>
<property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop313/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://movie:9000</value>
    </property>
</configuration>

配置hdfs-site.xml:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>movie:9870</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>movie:50090</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop313/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop313/tmp/dfs/data</value>
    </property>
</configuration>

配置mapred-site.xml:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>movie:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>movie:19888</value>
        </property>
</configuration>
  1. mapreduce.framework.name:设置MapReduce框架的名称,默认为local,表示在本地运行;设置为yarn表示使用YARN作为资源管理器。
  2. mapreduce.jobhistory.address:设置MapReduce作业历史记录服务(JobHistory)的地址,用于存储和管理已完成的MapReduce作业的信息。
  3. mapreduce.jobhistory.webapp.address:设置MapReduce作业历史记录服务的Web应用程序的地址,用于通过Web界面查看和管理已完成的作业信息。

配置yarn-site.xml:

<configuration>

<!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>movie1</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>
  1. yarn.resourcemanager.hostname:设置YARN资源管理器(ResourceManager)的主机名或IP地址。

  2. yarn.nodemanager.aux-services:设置YARN节点管理器(NodeManager)提供的辅助服务。节点管理器将提供MapReduce的Shuffle服务。

工具安装

 sudo apt install net-tools

查看本机ip地址:

ifconfig

如我的IP地址为:192.168.200.128

修改映射关系:

sudo vim /etc/hosts

如图我使用的两个节点名称与对应的 IP 关系如下:

192.168.200.128 movie

192.168.200.129 movie1

克隆出另一台虚拟机movie1

关闭虚拟机---右击虚拟机---管理---克隆

选择创建完整克隆

命名虚拟机并更改存储位置

打开克隆的虚拟机

修改主机名为movie1:

sudo vim /etc/hostname

修改IP地址:

点击setting---network---设置

本机中IP恰好与上述映射关系中的ip地址相同便不做修改,若不同可按如下步骤进行修改:

选择IPV4---修改IP地址(Address)为192.168.200.129---修改子网掩码(Network)为255.255.255.0---修改网关(Gateway)为192.168.200.1---点击Apply应用生效

192.168.200.129对应的网关为192.168.200.1,即网关与IP地址前三位一致,最后一位为1

回到主节点虚拟机

如果是完全分布式的多台虚拟机之间的配置,参照2 SSH实现免密远程登录,只要把主节点的id_rsa.pub追加到需要免密登录的虚拟机的authorized_keys中。

将公钥拷贝到要免密登录的目标机器上:

cd ~/.ssh

ssh-copy-id movie1

远程发现可以登录到从节点虚拟机

在主节点上就可以无密码 SSH 到各个从节点了

启动集群:

start-all.sh

验证每台虚拟机上面的进程数:

通过命令 jps 查看各个节点所启动的进程

在主节点(movie)上可以看到 NameNode、SecondaryNameNode、DataNode、NodeManager进程,如下图所示:

在从节点(movie1)可以看到DataNode、ResourceManager、NodeManager 进程,如下图所示:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值