大数据集群搭建(四)——Hadoop-3.1.3安装

Hadoop-3.1.3安装

  1. 下载hadoop-3.1.3压缩包
  2. 将文件上传到nn1节点~/pkg目录下
  3. 执行以下命令,在nn1、nn2、dn1、dn2、dn3五台节点安装
#解压到/opt目录
tar -zxvf hadoop-3.1.3.tar.gz -C /opt

#创建hadoop的软连接
cd /opt
ln -sf hadoop-3.1.3 hadoop

#配置环境变量
vim /etc/profile

#在末尾增加以下内容,然后保存
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:

#使配置生效
source /etc/profile
  1. 配置高可用的HDFS和YARN
    配置hadoop-env.sh
vim /opt/hadoop/etc/hadoop/hadoop-env.sh

#添加以下内容并保存
export JAVA_HOME=/usr/java/jdk1.8.0_241-amd64

配置hdfs-site.xml

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

#在<configuration>和</configuration>中间,添加以下内容
 <property>
        <!--这里配置逻辑名称,可以随意写 -->
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>
    <property>
        <!-- 禁用权限 -->
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
    <property>
        <!-- 配置namenode 的名称,多个用逗号分割  -->
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1,nn2</value>
    </property>
    <property>
        <!-- dfs.namenode.rpc-address.[nameservice ID].[name node ID] namenode 所在服务器名称和RPC监听端口号  -->
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>nn1:8020</value>
    </property>
    <property>
        <!-- dfs.namenode.rpc-address.[nameservice ID].[name node ID] namenode 所在服务器名称和RPC监听端口号  -->
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>nn2:8020</value>
    </property>
    <property>
        <!-- dfs.namenode.http-address.[nameservice ID].[name node ID] namenode 监听的HTTP协议端口 -->
        <name>dfs.namenode.http-address.mycluster.nn1</name>
        <value>nn1:50070</value>
    </property>
    <property>
        <!-- dfs.namenode.http-address.[nameservice ID].[name node ID] namenode 监听的HTTP协议端口 -->
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <value>nn2:50070</value>
    </property>

    <property>
        <!-- namenode 共享的编辑目录, journalnode 所在服务器名称和监听的端口 -->
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://dn1:8485;dn2:8485;dn3:8485/mycluster</value>
    </property>

    <property>
        <!-- namenode高可用代理类 -->
        <name>dfs.client.failover.proxy.provider.mycluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>

    <property>
        <!-- 使用ssh 免密码自动登录 -->
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>

    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>

    <property>
        <!-- journalnode 存储数据的地方 -->
        <name>dfs.journalnode.edits.dir</name>
        <value>/opt/data/journal/node/local/data</value>
    </property>

    <property>
        <!-- 配置namenode自动切换 -->
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>

配置core-site.xml

#在<configuration>和</configuration>中间,添加以下内容
<property>
        <!-- 为Hadoop 客户端配置默认的高可用路径  -->
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>
    </property>
    <property>
        <!-- Hadoop 数据存放的路径,namenode,datanode 数据存放路径都依赖本路径,不要使用 file:/ 开头,使用绝对路径即可
            namenode 默认存放路径 :file://${hadoop.tmp.dir}/dfs/name
            datanode 默认存放路径 :file://${hadoop.tmp.dir}/dfs/data
        -->
        <name>hadoop.tmp.dir</name>
        <value>/opt/data/hadoop/</value>
    </property>

    <property>
        <!-- 指定zookeeper所在的节点 -->
        <name>ha.zookeeper.quorum</name>
        <value>dn1:2181,dn2:2181,dn3:2181</value>
    </property>

配置yarn-site.xml

 <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>

    <property>
        <!-- 配置yarn为高可用 -->
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <property>
        <!-- 集群的唯一标识 -->
        <name>yarn.resourcemanager.cluster-id</name>
        <value>mycluster</value>
    </property>
    <property>
        <!--  ResourceManager ID -->
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    <property>
        <!-- 指定ResourceManager 所在的节点 -->
        <name>yarn.resourcemanager.hostname.rm1</name>
         <value>nn1</value>
    </property>
    <property>
        <!-- 指定ResourceManager 所在的节点 -->
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>nn2</value>
    </property>
    <property>
        <!-- 指定ResourceManager Http监听的节点 -->
        <name>yarn.resourcemanager.webapp.address.rm1</name>
        <value>nn1:8088</value>
    </property>
    <property>
        <!-- 指定ResourceManager Http监听的节点 -->
        <name>yarn.resourcemanager.webapp.address.rm2</name>
        <value>nn2:8088</value>
    </property>
    <property>
        <!-- 指定zookeeper所在的节点 -->
        <name>yarn.resourcemanager.zk-address</name>
        <value>dn1:2181,dn2:2181,dn3:2181</value>
    </property>

	<!-- 启用节点的内容和CPU自动检测,最小内存为1G -->
    <!--<property>
        <name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
        <value>true</value>
    </property>-->

配置mapred-site.xml

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

将配置好的hadoop目录发送到每一个节点

cd /opt
scp -r ./hadoop nn2:`pwd`
scp -r ./hadoop dn1:`pwd`
scp -r ./hadoop dn2:`pwd`
scp -r ./hadoop dn3:`pwd`

配置datanode节点

cd /opt/hadoop/etc/hadoop
echo dn1 > workers
echo dn2 >> workers
echo dn3 >> workers

分别在nn2、dn1、dn2、dn3中配置hadoop的环境变量

  1. 启动HDFS和YARN
#启动zookeeper,在dn1、dn2、dn3三个节点上启动
zkServer.sh start

#在其中一个namenode(nn1)中格式化zookeeper
hdfs zkfc -formatZK

#在每台journalnode(dn1、dn2、dn3)中启动所有的journalnode:
/opt/hadoop/bin/hdfs --daemon start journalnode

#在nn1中格式化namenode
hdfs namenode -format

#在nn1中启动namenode
hdfs --daemon start namenode

#高可用模式配置namenode,使用下列命令来同步namenode(在nn2中执行):
hdfs namenode -bootstrapStandby

#在nn1执行,启动HDFS和YARN:
start-dfs.sh
start-yarn.sh
  1. 注意
    如果启动报以下错误:
    在这里插入图片描述
    需要修改
#进入/opt/hadoop/sbin
cd /opt/hadoop/sbin
#在start-dfs.sh和stop-dfs.sh中添加以下内容
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=root
#在start-yarn.sh和stop-yarn.sh中添加以下内容
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root
  1. 对所有节点进行快照
### 搭建比赛用大数据集群环境的方法 #### 准备工作 为了构建一个高效稳定的大数据处理平台,在开始之前需确保所有必要的软件包已就绪。提前准备好`hadoop-3.1.3.tar.gz`、`jdk-8u212-linux-x64.tar.gz`并放置于`/opt/`目录下[^1]。 #### JDK 解压安装与配置 对于JDK而言,其解压缩过程相对简单直接;而更重要的是完成之后的路径设置工作。这一步骤涉及到编辑系统的全局配置文件来添加Java运行所需的环境变量。具体操作是在各节点上通过命令行工具打开`/etc/profile`文件进行修改[^2]。 #### Hosts 文件配置 正确配置主机名到IP地址之间的映射关系至关重要,它不仅简化了网络通信中的名称解析流程,还为后续实施无密码SSH登录以及部署各类分布式组件奠定了基础。此环节主要涉及更新每台机器上的`/etc/hosts`文件内容[^3]。 #### Hadoop 安装及初始化 接下来就是核心部分——Hadoop本身的安装及其初步设定。同样地,先将下载好的二进制版本释放至指定位置,随后依照官方文档指导调整相应参数选项以适应当前硬件条件和业务需求。特别需要注意的是,针对完全分布式的场景,还需额外关注NameNode、DataNode等角色的具体安排。 #### XML 配置优化 深入理解XML格式下的资源配置项是调优性能的关键所在。例如可以在`core-site.xml`, `hdfs-site.xml`, 或者其他相关配置文件内的`<configuration>`标签之间加入特定属性定义,从而更好地控制整个框架的行为模式[^4]。 ```xml <!-- core-site.xml --> <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://namenode:9000</value> </property> </configuration> <!-- hdfs-site.xml --> <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration> ``` 最后验证集群状态是否正常运作,可以通过启动服务后尝试访问Web界面或是利用CLI指令来进行基本的功能测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值