0
点赞
收藏
分享

微信扫一扫

Hadoop学习笔记[2]-HDFS安装部署流程

Mezereon 2022-02-03 阅读 51

Hadoop学习笔记[2]-HDFS安装部署流程

1、必备软件

  1-1 java(最好是1.8及其以上,but1.8以上只有open jdk了)
  1-2 ssh软件,免密登录需要具体怎么配置网络上搜吧
   直接在官网上搜就行了【https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html 这里就有】,主要就是生成公钥和私钥,并将公钥分发给要免密登录的服务器,登录时,会拿着自己的私钥和对方的公钥进行匹配,匹配上就可以登录,等于是说对方有一把指纹锁,你把公钥给对方等于是在指纹锁中录入了自身的信息,等你拿着私钥登录对方时,等于在锁上录入指纹信息,如果匹配上,则表示可以开锁【即可以登录对方服务器】

2、hadoop.env文件配置JAVA_HOME变量

  为啥?一般情况下我们在不是Java时都会在/etc/profile中配置JAVA_HOME,为什么还要再配置一次?主要是因为启动hdfs的时候,
使用的是ssh远程登录到别的服务器运行命令,但是ssh远程后无法取到/etc/profile中的环境变量,所以才需要在hadoop.env中进行配置,表示要同时告诉操作系统和hadoop本机的JAVA_HOME在哪

3、解压hadoop安装包到某个文件夹

4、单机版部署(伪分布式)

4-1 角色分类(伪分布式的所有角色都在同一台服务器)
  • 1)、NameNode 主要是存储元数据
  • 2)、DataNode 存储文件的block块
  • 3)、secondaryNameNode周期合并fsimage(元数据全量快照)和edit_log(增量操作日志)生成新的fsimage返回给NameNode【减轻NameNode的压力
4-2 配置/etc/hadoop下的core-site.xml
    <property>
         <name>fs.defaultFS</name>   <!--nameNode的位置信息-->
        <value>hdfs://hdp001:9000</value>
    </property>

4-3 配置hdfs-site.xml
<property> <!-- hdfs文件的副本 -->
         <name>dfs.replication</name>
         <value>1</value>
 </property>

    <property> <!-- nameNode元数据存储路径 -->
         <name>dfs.namenode.name.dir</name>
         <value>/var/hadoop/hdfs/local/dfs/name</value>
    </property>

    <property> <!-- DataNode数据存储路径-->
         <name>dfs.datanode.data.dir</name>
         <value>/var/hadoop/hdfs/local/dfs/data</value>
    </property>

    <property> <!-- secondaryNameNode服务器地址 -->
         <name>dfs.namenode.secondary.http-address</name>
         <value>hdp001:50090</value>
    </property>

    <property> <!-- secondaryNameNode数据存储路径 -->
         <name>dfs.namenode.checkpoint.dir</name>
         <value>/var/hadoop/hdfs/local/dfs/namesecondary</value>
    </property>
4-4 配置slaves文件【dataNode的地址】
  hdp001
4-5 在/sbin下使用start-dfs.sh启动hdfs【web:http://hdp001:50070】

5、分布式部署【一共四台虚拟机:hdp001,hdp002,hdp003,hdp004】

5-1 角色规划
NNSNNDN
hdp001*
hdp002**
hdp003*
hdp004*
5-2 配置 core-site.xml

  **不需要改配置,保持和之前一样即可

5-3 配置hdfs-site.xml
        <property>
             <name>dfs.replication</name>
             <value>2</value>
        </property>
    
        <property>
             <name>dfs.namenode.name.dir</name>
             <value>/var/hadoop/hdfs/full/dfs/name</value>
        </property>
    
        <property>
             <name>dfs.datanode.data.dir</name>
             <value>/var/hadoop/hdfs/full/dfs/data</value>
        </property>
    
        <property>
             <name>dfs.namenode.secondary.http-address</name>
             <value>hdp002:50090</value>
        </property>
    
        <property>
             <name>dfs.namenode.checkpoint.dir</name>
             <value>/var/hadoop/hdfs/full/dfs/namesecondary</value>
        </property>
5-4 配置slaves(HA模式的slaves文件和这个一样)
  hdp002
  hdp003
  hdp004

6、分布式部署 HA模式【一共四台虚拟机:hdp001,hdp002,hdp003,hdp004】

6-1 角色规划
NNJNDNZKFCZK
hdp001****
hdp002*****
hdp003***
hdp004**
6-2 配置core-site.xml
<configuration>
    <property>
         <name>fs.defaultFS</name> <!--逻辑名称,mycluster的具体地址会从hdfs的配置文件解析-->
        <value>hdfs://mycluster</value>
    </property>
    <property> <!--zk地址-->
        <name>ha.zookeeper.quorum</name>
        <value>hdp002:2181,hdp003:2181,hdp004:2181</value>
    </property>
</configuration>
6-3 配置hdfs-site.xml
<!--HA集群-->
    <property><!--集群NN逻辑名称-->
      <name>dfs.nameservices</name>
      <value>mycluster</value>
    </property>

    <property> <!--NN物理机地址-->
      <name>dfs.ha.namenodes.mycluster</name>
      <value>hdp001,hdp002</value>
    </property>
    
    <property> <!--RPC地址-->
      <name>dfs.namenode.rpc-address.mycluster.hdp001</name>
      <value>hdp001:8020</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.mycluster.hdp002</name>
      <value>hdp002:8020</value>
    </property>


    <property> <!--web地址和端口-->
      <name>dfs.namenode.http-address.mycluster.hdp001</name>
      <value>hdp001:50070</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.hdp002</name>
      <value>hdp002:50070</value>
    </property>

   <!--JNN日志存储目录和JNN地址-->
    <property> <!--JN-->
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://hdp001:8485;hdp002:8485;hdp003:8485/mycluster</value>
    </property>
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/var/hadoop/hdfs/ha/dfs/jn</value>
    </property>

    <!--免密配置SSH,ZKFC需要免密登录NN机器执行命令对NN进行降级等操作-->
    <property>
      <name>dfs.client.failover.proxy.provider.mycluster</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
      <name>dfs.ha.fencing.methods</name>
      <value>sshfence</value>
    </property>
    <property>
      <name>dfs.ha.fencing.ssh.private-key-files</name>
      <value>/home/hdp01/.ssh/id_rsa</value>
    </property>
    
     <!--故障自动转移-->
     <property>
       <name>dfs.ha.automatic-failover.enabled</name>
       <value>true</value>
     </property>
6-4 实施流程
  • 1)、 搭建zk
  • 2)、 启动JN hadoop-daemon.sh start journalnode
  • 3)、 选择一个NN进行格式化,hdfs namenode -format
  • 4)、 启动格式化的NN,hadoop-daemon.sh start namenode
  • 5)、 在另一台NN运行 hdfs namenode -bootstrapStandby
  • 6)、 格式化zk:hdfs zkfc -formatZK
  • 7)、 start-dfs.sh
6-5 可以自己测试一下HA模式下的故障转移

杀死hdp001的zkfc进程或者nn进程,其会将hdp002自动升级为主【kill -9 psid】

举报

相关推荐

0 条评论