当前位置:   article > 正文

Linux - HDFS部署_linux 添加 hdfs 命令

linux 添加 hdfs 命令

前言

以下操作环境均在Centos7服务器上面,一共四台服务器,node1、node2、node3、node4

准备&安装

官网下载hadoop,看准自己需要的版本,我自己这里就下载一个旧的版本使用了(3.2.3)

在这里插入图片描述

集群分布

node1node2node3node4
zookeeperzookeeperzookeeper
NameNodeSecondaryNameNode
DataNodeDataNodeDataNode

配置

下载之后上传至其中一台服务器上,先配置好一天在将文件传给其他服务器上面,以下操作在node2上

mkdir /usr/local/hadoop   # 创建hadoop使用的目录
mkdir /usr/local/hadoop/full  # 创建一个目录后面配置使用
tar -zxvf hadoop-3.2.3.tar.gz   # 解压hadoop安装包
mv hadoop-3.2.3 /usr/local/hadoop/   # 移动解压后的安装包到目录
rm -rf /usr/local/hadoop/hadoop-3.2.3/share/doc/  # 删除hadoop文档,方便后面传输速度
vim /etc/profile   # 添加环境变量,在文件的最后添加
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

编辑profile文件添加

export HADOOP_HOME=/usr/local/hadoop/hadoop-3.2.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • 1
  • 2

命令行执行

source /etc/profile   # 刷新文件
scp /etc/profile node1:/etc   # 将环境文件传给node1
scp /etc/profile node3:/etc   # 将环境文件传给node3
scp /etc/profile node4:/etc   # 将环境文件传给node4
# 由于node1上面没有zookeeper,传输的环境文件中有,将node1上的zookeeper环境删除
source /etc/profile  # 刷新4台机器上的环境文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

node2命令行

cd /usr/local/hadoop/hadoop-3.2.3/etc/hadoop   # 进入到hadoop需要配置的文件夹中,
vim hadoop-env.sh   # 进入配置,具体查看下面需要添加的配置
vim workers   # 配置datanode节点,hadoop3.0之前的版本是slaves文件,具体查看下面需要添加的配置
vim hdfs-site.xml  # 配置SecondaryNameNode位置,具体查看下面需要添加的配置
vim core-site.xml  # 配置namenode位置,具体查看下面需要添加的配置
  • 1
  • 2
  • 3
  • 4
  • 5

编辑hadoop-env.sh文件

/JAVA_HOME  # 使用vim命令搜索Java配置路径,有的话就修改,没有的话就添加
export JAVA_HOME=/usr/local/jdk/jdk  # 添加上我们的jdk路径
  • 1
  • 2

编辑workers文件

node2
node3
node4
  • 1
  • 2
  • 3

编辑hdfs-site.xml文件,进入文件查找到<configuration>标签,在标签中进行添加,同时可参考官网的配置文件

<configuration>
     <!-- SecondaryNameNode位置 -->
     <property>
         <name>dfs.namenode.secondary.http-address</name>
         <value>node2:9868</value>
     </property>
     <!-- 副本数 -->
     <property>
          <name>dfs.replication</name>
          <value>2</value>
     </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

编辑core-site.xml文件,进入文件查找到<configuration>标签,在标签中进行添加,同时可参考官网的配置文件

<configuration>
	 <!-- 指定namenode地址 -->
     <property>
          <name>fs.defaultFS</name>
          <value>hdfs://node1:9000</value>
     </property>
     <!-- 指定hadoop临时目录位置 -->
     <property>
          <name>hadoop.tmp.dir</name>
          <value>file:/usr/local/hadoop/full</value>
     </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

node2命令行

cd /usr/local   # 进入到此位置,准备传文件
scp -r hadoop/ node1:/usr/local/   # 传给node1
scp -r hadoop/ node3:/usr/local/   # 传给node3
scp -r hadoop/ node4:/usr/local/   # 传给node4
  • 1
  • 2
  • 3
  • 4

node1命令行

hdfs namenode -format   # 格式化namenode
start-dfs.sh   # 启动
jps   # 可以通过查看进程,看四台机器是否启动
  • 1
  • 2
  • 3

验证

浏览器打开 http://node1:9870
9870为默认端口,想自定义的话可以配置hdfs-site.xml文件,按照官网的文档配置即可
在这里插入图片描述
node2命令行

hdfs dfs -mkdir /usr   # 创建dfs文件夹
hdfs dfs -D dfs.blocksize=1048576 -put xxx.gz /usr  # 指定块大小为1M,查看块的副本,每个块必定在node2上留有副本(从那个datanode上传时每个块都会在那个节点产生副本)
  • 1
  • 2

node1命令行

hdfs dfs -D dfs.blocksize=1048576 -put xxxx.gz /usr  # 指定块大小为1M,查看块的副本,由于从namenode上传,所以与上面的不同
  • 1

NameNode 高可用

集群分布

node1node2node3node4
zookeeperzookeeperzookeeper
NameNodeSecondaryNameNode
DataNodeDataNodeDataNode
ZooKeeperFailoverControllerZooKeeperFailoverController
JournalNodeJournalNodeJournalNode

首先关闭dfs

stop-dfs.sh
vim hdfs-site.xml   # 具体查看下面需要添加的配置,与上面有些配置重复,可以先将上面的配置删除
vim core-site.xml   # 具体查看下面需要添加的配置,与上面有些配置重复,可以先将上面的配置删除
  • 1
  • 2
  • 3

编辑hdfs-site.xml文件

<!-- 指定副本的数量,同上 -->
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <!-- 解析参数dfs.nameservices值hdfs://mycluster的地址 -->
  <property>
    <name>dfs.nameservices</name>
    <value>mycluster</value>
  </property>
  <!-- mycluster由以下两个namenode支撑 -->
  <property>
    <name>dfs.ha.namenodes.mycluster</name>
    <value>nn1,nn2</value>
  </property>
  <!-- 指定nn1地址和端口号  -->
  <property>
    <name>dfs.namenode.rpc-address.mycluster.nn1</name>
    <value>node1:8020</value>
  </property>
  <!-- 指定nn2地址和端口号  -->
  <property>
    <name>dfs.namenode.rpc-address.mycluster.nn2</name>
    <value>node2:8020</value>
  </property>
  <!-- 指定客户端查找active的NameNode的策略:会给所有NameNode发请求,以决定哪个是active的 -->
  <property>
    <name>dfs.client.failover.proxy.provider.mycluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>
  <!-- 指定三台JournalNode服务器的地址 -->
  <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://node1:8485;node2:8485;node3:8485/mycluster</value>
  </property>
  <!-- JournalNode日志编辑文件存储的目录 -->
  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/usr/local/hadoop/ha/jnn</value>
  </property>
  <!-- 当active NameNode出现故障时,ssh到对应的服务器,将namenode进程kill掉  -->
  <property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
  </property>
  <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行 -->
  <property>
    <name>dfs.ha.fencing.methods</name>
    <value>
       sshfence
       shell(/bin/true)
    </value>
  </property>
  <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
  </property>
  <!--启动NN故障自动切换 -->
  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

编辑core-site.xml文件

<configuration>
     <!-- 此处进行了修改,nameservice,名字需要与上面的hdfs-site.xml第二个配置相同-->
     <property>
          <name>fs.defaultFS</name>
          <value>hdfs://mycluster</value>
     </property>
     <!-- 此处进行了修改,文件地址进行修改-->
     <property>
          <name>hadoop.tmp.dir</name>
          <value>/usr/local/hadoop/ha</value>
     </property>
     <!-- 添加此配置,指定每个zookeeper服务器的位置和客户端端口号 -->
     <property>
          <name>ha.zookeeper.quorum</name>
          <value>node2:2181,node3:2181,node4:2181</value>
     </property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

然后将进行修改的两个文件分发到其他三台机子上

scp hdfs-site.xml core-site.xml node2:$PWD/
scp hdfs-site.xml core-site.xml node3:$PWD/
scp hdfs-site.xml core-site.xml node4:$PWD/
  • 1
  • 2
  • 3

node1,node2,node3命令行操作,除了node4

hdfs --daemon start journalnode   # 启动JournalNode
  • 1

node1命令行

hdfs namenode -format   # 格式化NameNode
hdfs --daemon start namenode   # 启动NameNode
  • 1
  • 2

node2命令行

hdfs namenode -bootstrapStandby   # 在node2上同步元数据
  • 1

node1命令行

hdfs zkfc -formatZK   # 在zookeeper上创建节点
start-dfs.sh   # 启动hdfs
jps   # 查看进程
  • 1
  • 2
  • 3

在这里插入图片描述

可以使用命令将active状态的NameNode的节点关闭,通过http://node1:9870或者http://node2:9870查看会不会自动切换
报错可以去看以下Hadoop日志,出现问题先把Hadoop相关进程都关了,然后修改问题,重新回到配置后的步骤重新格式化(已经格式化十几次了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/1002495
推荐阅读
相关标签