Ubuntu 18.04 版本 Hadoop HA分布式集群搭建

目录

1.分布式集群的网络和节点规划

2.分布式集群准备环境

2.1 配置主机名

2.2 静态ip配置

2.3 配置清华源(软件源)

3.ssh免密登录 

3.1  在本机下载ssh服务 openssh-serve 和 openssh-client

 3.2 本机ssh登录一下 (类似于初始化)

3.3 设置免密登录

3.4 不同节点ssh免密登录

4.jdk 配置

4.1 创建文件夹 用于存放java

4.2 下载jdk.tar.gz压缩包

4.3 将压缩包解压到4.1创建的文件夹中

4.4 配置环境变量

4.5检查

5.Hadoop集群配置

1. hadoop 下载

 1.1 下载并传输完成后解压

1.2 配置hadoop文件环境

1.3 验证 hadoop

2 配置hadoop文件

2.1 core-site.xml        -----核心文件

2.2 hdfs-site.xml

2.3 yarn-site.xml 

2.4mapred-site.xml 

2.5 配置 DataNoda的工作环境

3.时间同步


1.分布式集群的网络和节点规划

主机名IP地址节点类型
master1192.168.189.135master1
master2192.168.189.137

master2

slave01192.168.189.136

slave01

slave02192.168.189.138                  slave02

节点规划

服务mastermaster02slave01slave02slave03
NameNode     √   √
SecondNameNode     (取消)
DataNode      √      √    √    √
hbase     √      √          
zookeeper     √       √    √

2.分布式集群准备环境

2.1 配置主机名

1.将/etc/hostname中旧的主机名删除,并将新主机名写入

2.将/etc/hosts 中的映射修改

2.2 静态ip配置

1. 查看网卡名  我的是ens33    ifconfig命令

2.配置文件 /etc/netplan/01-........

文件最初内容:

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

  ethernets:

                ens33:   #ens33网卡

                        addresses:[192.168.189.135/24]  #静态地址

                        gateway4: 192.168.189.2  #网关

                        nameservers:    #设置DNS

                                        addresses: [114.114.114.114,114.114.114.115]

               ens37:   #配置多个网卡直接加就行,ethernets只需要一个就可以了

2.3 配置清华源(软件源)

因为ubuntu自带的软件源,在国外,下载需要很长时间,所以可以用国内的软件源代替:

ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror  

代替步骤:

第一步:将原来的”软件源”备份,以防不时之需: mv /etc/apt/sources.list  /etc/apt/sources.list.bak

第二步:将镜像提供的源给写入 vim /etc/apt/source.list 中

(详细步骤:Ubuntu apt-get 国内镜像源替换(新手必看,超详细!各种镜像源网站都有)_apt-get 镜像-CSDN博客

第三步:更新镜像: sudo apt update ; sudo apt upgrade 

3.ssh免密登录 

3.1  在本机下载ssh服务 openssh-serve 和 openssh-client

sudo apt-get install openssh-server
sudo apt-get install openssh-client

 3.2 本机ssh登录一下 (类似于初始化)

ssh localhost 

注: 不本地登录,找不到 ~/.ssh文件夹

3.3 设置免密登录

cd ~/.ssh

建立密钥

ssh-keygen -t rsa  (一路空格)

免密配置:把密钥传到 authorized_keys

cat id_rsa.pub >> ./authorized_keys

尝试免密登录

ssh localhost

3.4 不同节点ssh免密登录

假设 A ,B ,C三个节点

eg:B  将  A公钥(id_rsa.pub)发给 B 并将内容写入B的  ~/.ssh/authority_keys中

        实现: A免密登录B

ssh免密码登录的原理_免秘钥登录原理-CSDN博客

4.jdk 配置

4.1 创建文件夹 用于存放java

4.2 下载jdk.tar.gz压缩包

4.3 将压缩包解压到4.1创建的文件夹中

4.4 配置环境变量

vim ~/.bashrc

将下列配置添进去

 export JAVA_HOME=/home/hadoop/java-jdk/java....  #jdk下载的路径
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH      #配置环境变量的格式,如下图格式

添加后应用环境

source ~/.bashrc

注解:bashrc 和 profile :bashrc是用户级,profile是系统级:环境变量配置文件

4.5检查

java -version

5.Hadoop集群配置

1. hadoop 下载

这里我推荐用迅雷下载,用xftp(一个软件)连接虚拟机传输

下载地址:Apache Downloads

 1.1 下载并传输完成后解压

解压命令:

sudo tar -zxf~/download/hadoop-2.10.1.tar.gz -C /usr/lcoal      //将Hadoop解压到/usr/lcoal下 cd /usr/local        

sudo mv ./hadoop-2.10.1  ./hadoop   //重命名为hadoop          

sudo chown -R hadoop.hadoop ./hadoop  //修改文件权限

注解:权限很重要一定要修改好:文件的权限,不然很大概率会在后续进展出错,后续所创建的文件夹都需要有权限

权限有两种:第一种是所属用户和所属组(chown命令)

                      第二种是权限大小(chmod命令)

1.2 配置hadoop文件环境

vim ~/.bashrc

将下边的代码添加到环境里面

export HADOOP_HOME=/usr/local/hadoop        

#下边这个 PATH只用配一次,配置jdk的时候已经写过,只需要把:${HADOOP_HOME}/bin 添加进去就行

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

1.3 验证 hadoop

hadoop version

2 配置hadoop文件

在下载的hadoop里面的  /etc/hadoop 配置 core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个文件

2.1 core-site.xml        -----核心文件

<configuration> #原文件中有 这个标签了 ,不用写入
        <property>
          <name>fs.defaultFS</name> #默认文件系统
          <value>hdfs://mycluster:8485</value>       #Hadoop HA集群配置
        </property>

        <!-- 配置 hadoop.tmp.dir 路径到持久化目录 -->

        <property>
          <name>hadoop.tmp.dir</name>    #
          <value>/home/hadoop/tmp</value>  #这里的路径注意修改为你自己的路径!!并且权限一定要属于用户自己,我这里自己在 桌面建立了tmp文件用来存储
        </property>

        <!--配置zookeeper-->

        <property>
          <name>ha.zookeeper.quorum</name>  
          <value>master1:2181,master2:2181,slave01:2181</value> #这个与zookeeper配置的接口有关
        </property>

        <!-- hadoop 链接 zookeeper 的超时时长设置 -->
        <property>
            <name>ha.zookeeper.session-timeout.ms</name>
            <value>30000</value>#单位是ms
        </property>

        <property>
            <name>fs.trash.interval</name>
             <value>1440</value>
        </property>

</configuration>

 关于 hadoop.tmp.dir 理解及配置-CSDN博客

关于 hadoop.tmp.dir 理解及配置 - 简书 (jianshu.com)

hadoop fs.trash 详解_fs.trash.interval-CSDN博客

2.2 hdfs-site.xml

<property>

          <name>dfs.nameservices</name>

          <value>mtcluster</value>

</property>

 <!-- 集群中NameNode节点都有哪些 ,这里给出了namenode,对后面起

namenode进程及zookeeper主备切换都有作用-->

<property>

        <name>dfs.ha.namenodes.mtcluster</name>

        <value>nn1,nn2</value>

</property>

 <!-- nn1,nn2的RPC通信地址 -->

<property>

          <name>dfs.namenode.rpc-address.mtcluster.nn1</name>

        <value>master1:9000</value>

</property>

<property>

        <name>dfs.namenode.rpc-address.mtcluster.nn2</name>

        <value>master2:9000</value>

 </property>

 <!-- nn1,nn2的HTTP通信地址 -->

 <property>

        <name>dfs.namenode.http-address.mtcluster.nn1</name>

        <value>master1:50070</value>

 </property>

 <property>

       <name>dfs.namenode.http-address.mtcluster.nn2</name>

       <value>master2:50070</value>

</property>

<!--保存FsImage镜像的目录,即namenode里的metadata-->

<property>    #这个文件很重要

        <name>dfs.namenode.name.dir.mtcluster</name>

        <value>/home/hadoop/dfs/name</value>

</property>

 <!-- 指定NameNode元数据在JournalNode上的存放位置 -->

<property>

        <name>dfs.namenode.shared.edits.dir</name>

        <value>qjournal://master1:8485;master2:8485;slave01:8485/mtcluster</value>

</property>

<!--声明journalnode服务器数据存储目录-->

<property>

    <name>dfs.journalnode.edits.dir</name>

    <value>/home/hadoop/data/jn</value>

</property>

<!--开启HDS HA 实现namenode层的主备切换-->

<property>

        <name>dfs.ha.automatic-failover.enabled</name>

        <value>true</value>

</property>

<property>

        <name>dfs.client.failover.proxy.provider.mtcluster</name>

        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

<!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 这里添加shell(bin/true)-->

<property>

        <name>dfs.ha.fencing.methods</name>

        <value>sshfence

        shell(/bin/true)</value>

</property>

 <!-- 关闭权限检查-->

<property>

        <name>dfs.permissions.enable</name>

        <value>false</value>

</property>

<!-- 使用隔离机制时需要ssh无秘钥登录,注意的是这里需要master1 和

master2的双向ssh-->

<property>

        <name>dfs.ha.fencing.ssh.private-key-files</name>

        <value>/home/hadoop/.ssh/id_rsa</value>

</property>

<property>

        <name>dfs.namenode.secondary.http-address</name>

        <value>master2:9001</value>

</property>

<property>

        <name>dfs.namenode.http-address</name>

        <value>master1:9001</value>

</property>

<!--这个参数用于确定将HDFS文件系统的数据保存在什么目录下-->

<property>

        <name>dfs.datanode.data.dir</name>

        <value>file:/home/hadoop/dfs/data</value>

</property>

<!--HDFS数据备份数-->

<property>

        <name>dfs.replication</name>

        <value>3</value>

</property>

<property>

        <name>dfs.webhdfs.enabled</name>

        <value>true</value>

</property>

<!--HDFS节点-->

<property>

        <name>dfs.hosts</name>

        <value>/home/hadoop/hadoop/etc/hadoop/slaves</value>

</property>

<!--HDFS黑名单-->

<property>

        <name>dfs.hosts.exclude</name>

        <value>/home/hadoop/hadoop/etc/hadoop/exclude-slaves</value>

</property>

dfs.namenode.name.dir 和dfs.datanode.data.dir CSDN博客

关于hdfs-site.xml的dfs.replication属性-CSDN博客

HDFS白名单和黑名单机制_dfs.hosts.exclude_军大_j的博客-CSDN博客

2.3 yarn-site.xml 

<property>

         <name>yarn.nodemanager.aux-services</name>

         <value>mapreduce_shuffle</value>

 </property>

 <property>

         <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

         <value>org.apache.hadoop.mapred.ShuffleHandler</value>

 </property>

 <property>

         <name>yarn.resourcemanager.address</name>

         <value>master1:8032</value>

 </property>

 <property>

         <name>yarn.resourcemanager.scheduler.address</name>

         <value>master1:8030</value>

 </property>

 <property>

         <name>yarn.resourcemanager.resource-tracker.address</name>

         <value>master1:8035</value>

 </property>

 <property>

         <name>yarn.resourcemanager.admin.address</name>

         <value>master1:8033</value>

 </property>

<!--WEB页面端口>

 <property>

         <name>yarn.resourcemanager.webapp.address</name>

         <value>master1:8088</value>

 </property

2.4mapred-site.xml 

<property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

</property>

<property>

        <name>mapreduce.jobhistory.address</name>

        <value>master1:10020</value>

</property>

<property>

        <name>mapreduce.jobhistory.webapp.address</name>

        <value>master1:19888</value>

</property>

2.5 配置 DataNoda的工作环境

在hadoop/etc/hadoop 下修改 slaves文件

master1

master2

slave01

slave02

3.时间同步

如何在 Ubuntu 上设置时间同步 - 知乎 (zhihu.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值