[hadoop]HDFS完全分布式搭建(基于hadoop-2.6.5的单NameNode形式)

本文介绍如何在四个CentOS 6.5节点上搭建Hadoop 2.6.5的完全分布式环境。主要内容包括修改hosts文件、实现免密钥登录、安装配置Hadoop及启动验证等关键步骤。

相关链接:
HDFS伪分布式搭建(基于hadoop-2.6.5的单NameNode形式)
https://blog.youkuaiyun.com/a755199443/article/details/97158845

HDFS-HA高可用完全分布式搭建(基于hadoop-2.6.5的多NameNode形式)
https://blog.youkuaiyun.com/a755199443/article/details/97165985

hadoop-yarn环境搭建(基于hadoop-2.6.5) 2019年07月25日 19:22:16
https://blog.youkuaiyun.com/a755199443/article/details/97273269

HDFS完全分布式搭建

环境背景

1 修改hosts文件

2 免密钥登录

3 安装hadoop

环境背景

完全分布式即NameNode和DataNode等部署在不同的节点上
各节点的系统时间需要同步, 各节点预先安装好jdk1.7 因为多节点有相同操作,使用xshell的同步命令能简化步骤
使用的各节点操作系统为CentOS_6.5
共四个节点node01,node02,node03,node04,ip分别为
node01 192.168.110.101
node02 192.168.110.102
node03 192.168.110.103
node04 192.168.110.104
将以node01作为NameNode,node02作为SecondNameNode
node02,node03,node04作为DataNode
登录用户为root

选择node01为管理节点,若没有特殊说明,默认操作的都是node01节点

hadoop-2.6.5资源链接:
链接:https://pan.baidu.com/s/1NHTCtqHbsuKztpruSRyB-A
提取码:j0sg

1 修改hosts文件

在每个节点的hosts文件末尾加上节点地址
192.168.110.101 node01
192.168.110.102 node02
192.168.110.103 node03
192.168.110.104 node04

vim /etc/hosts

在这里插入图片描述

2 免密钥登录

为了使用hadoop的管理脚本控制所有节点,要使node01 (任选的一个节点) 获得其他节点的免密钥登录权限
node01输入命令
ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
在/root目录生成.ssh目录

在这里插入图片描述
进入.ssh目录,其中有密钥id_dsa和公钥id_dsa.pub
在这里插入图片描述
把公钥放到访问方的认证文件里即可获得免密钥登陆权限
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
原本需要密码
在这里插入图片描述
完成免密钥登录后不需要密码
在这里插入图片描述

接下来做其他节点的免密钥登录
先在每个节点做一遍以下操作
① ssh root@localhost
② 输入密码
③ exit

在这里插入图片描述

将node01的公钥复制给其他三个节点,分别使用命令(此时还需要输入其他节点的登陆密码)

scp id_dsa.pub  root@node02:/root/.ssh/node01.pub
scp id_dsa.pub  root@node03:/root/.ssh/node01.pub
scp id_dsa.pub  root@node04:/root/.ssh/node01.pub

在其他三个节点的/root/.ssh目录创建认证文件

cat node01.pub >>authorized_keys

成功免密登录

在这里插入图片描述

3 安装hadoop

首先在四个节点创建安装目录/opt/hdfs

在这里插入图片描述
预先在四个节点修改环境变量
在/etc/profile文件末尾加上(含java环境变量,按自己实际情况更改)

export JAVA_HOME=/usr/java/jdk1.7.0_67
export HADOOP_PREFIX=/opt/hdfs/hadoop-2.6.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin

使环境变量生效

source /etc/profile

在这里插入图片描述

接下来只要在第一个节点完成hadoop的安装,再分发给其余三个节点即可

3.1 解压hadoop

将安装包文件上传至节点(在环境背景中有资源链接)

解压,获得hadoop-2.6.5文件夹

在这里插入图片描述
将其移动至新建的/opt/hdfs目录
在这里插入图片描述

3.2 修改管理脚本

因为要远程执行hadoop的管理脚本,而远程执行时不会与先读取profile文件,即环境变量失效,解决办法为修改脚本中的命令为绝对路径查找
进入/opt/hdfs/hadoop-2.6.5/etc/hadoop目录,逐个修改”env”后缀的文件

在这里插入图片描述

hadoop-env.sh 第25行
在这里插入图片描述
改为
在这里插入图片描述
mapred-env.sh 第16行
在这里插入图片描述
改为
在这里插入图片描述
yarn-env.sh 第26行
在这里插入图片描述
改为
在这里插入图片描述
3.3 修改配置文件
仍然在/opt/hdfs/hadoop-2.6.5/etc/hadoop目录
core-site.xml文件中做修改
在这里插入图片描述

注意此步开始与伪分布式环境开始不同

在configuration标签中加上

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node01:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/var/hdfs/hadoop/full</value>
</property>

在这里插入图片描述
其中fs.defaultFS指定meNode的位置
hadoop.tmp.dir位置的修改是出于安全性的考虑

继续修改hdfs-site.xml
hadoop框架默认副本数为3,这里修改为2
dfs.namenode.secondary.http-address设置SencondNameNode位置

    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node02:50090</value>
    </property>

在这里插入图片描述
slaves文件
slaves文件用于设定DataNode节点
在这里插入图片描述

3.4 分发hadoop

给其他节点做拷贝,输入命令

scp -r /opt/hdfs/hadoop-2.6.5/ node02:/opt/hdfs/
scp -r /opt/hdfs/hadoop-2.6.5/ node03:/opt/hdfs/
scp -r /opt/hdfs/hadoop-2.6.5/ node04:/opt/hdfs/

在这里插入图片描述

3.5 开始格式化

hdfs namenode -format

注意成功提示
在这里插入图片描述

3.6 启动各角色

start-dfs.sh

在这里插入图片描述

3.7 检测是否成功
在windows上检测完全分布式hdfs是否搭建成功
打开浏览器输入网址http://192.168.110.101:50070(预先关闭linux的防火墙或者开放端口)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.7 关闭hdfs

输入命令

stop-dfs.sh

在这里插入图片描述

<think>好的,用户提到在安装Hadoop分布式时,发现/opt/hadoop-2.6.5/etc/目录下没有hadoop目录。我需要先理清Hadoop的目录结构变化,特别是版本差异。 首先,Hadoop 2.x到3.x的目录结构可能有所不同。用户使用的是2.6.5版本,但根据我的记忆,Hadoop2.x版本中,配置文件通常位于etc/hadoop子目录下。所以正确的路径应该是/opt/hadoop-2.6.5/etc/hadoop。如果用户检查的路径是etc/而没有hadoop子目录,那可能意味着安装过程中出现了问题,或者解压的包不完整。 接下来,我需要考虑用户可能的操作步骤。用户可能下载了Hadoop的压缩包,解压到/opt目录下。但如果在解压过程中出现错误,或者下载的文件损坏,可能导致部分文件缺失。此时,建议用户验证文件的完整性,重新下载并解压。 另外,用户可能误判了目录结构。Hadoop的配置文件确实在etc/hadoop里,所以需要确认用户是否正确进入了该目录。或者,用户可能使用了不同版本的Hadoop,比如某些定制版本,导致目录结构不同。但标准版本应该是存在etc/hadoop的。 还有可能用户在安装过程中跳过了某些步骤,例如没有正确解压或者移动文件。比如,可能解压到了其他位置,或者未正确设置环境变量,导致路径混乱。 总结下来,解决步骤应该是: 1. 确认Hadoop安装包是否完整,重新下载并解压。 2. 检查解压后的目录结构,确认etc/hadoop是否存在。 3. 如果目录正确,继续配置环境变量和配置文件。 4. 若目录仍缺失,考虑版本问题或安装步骤错误。 需要提示用户检查这些点,并提供具体的命令示例,如解压命令和目录检查方法。同时,提醒用户在配置时使用正确的路径,避免因路径错误导致的后续问题。</think>在Hadoop分布式安装过程中,发现`/opt/hadoop-2.6.5/etc/`目录下缺失`hadoop`子目录,通常由以下原因导致: --- ### 原因分析与解决方案 #### 1. **安装包解压不完整** - **现象**:通过`tar -tzvf hadoop-2.6.5.tar.gz`检查压缩包内容时,发现`etc/hadoop`目录未包含。 - **解决步骤**: 1. 重新下载Hadoop安装包: ```bash wget https://archive.apache.org/dist/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz ``` 2. 验证文件完整性: ```bash md5sum hadoop-2.6.5.tar.gz # 对比官网提供的校验值 ``` 3. 重新解压并检查目录: ```bash tar -xzvf hadoop-2.6.5.tar.gz -C /opt/ ls /opt/hadoop-2.6.5/etc/hadoop # 确认目录存在 ``` #### 2. **版本兼容性问题** - **可能性**:Hadoop 3.x版本后目录结构调整(如配置文件迁移到`etc/hadoop`),但Hadoop 2.6.5的标准目录应为`etc/hadoop`。 - **验证方法**: ```bash find /opt/hadoop-2.6.5 -name "core-site.xml" # 搜索配置文件路径 ``` #### 3. **手动创建目录(备用方案)** - **操作步骤**: 1. 创建缺失目录: ```bash mkdir -p /opt/hadoop-2.6.5/etc/hadoop ``` 2. 从源码或官方文档复制默认配置文件: ```bash cp hadoop-2.6.5-src/hadoop-common-project/hadoop-common/src/main/resources/*.xml /opt/hadoop-2.6.5/etc/hadoop/ ``` --- ### 配置验证示例 若目录恢复后,需配置核心文件: 1. **`core-site.xml`**(HDFS地址): ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration> ``` 2. **`hdfs-site.xml`**(副本数设置): ```xml <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> ``` --- ### 关键检查点 | 检查项 | 预期结果 | 异常处理 | |-----------------------|------------------------------|--------------------------| | `etc/hadoop`目录存在 | 包含`*.xml`和`*-env.sh`文件 | 重新解压或手动创建目录 | | 环境变量`HADOOP_HOME` | 指向`/opt/hadoop-2.6.5` | 在`~/.bashrc`中修复路径 | 完成上述步骤后,通过`start-dfs.sh`启动服务,使用`jps`验证`NameNode`和`DataNode`进程是否存活。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值