大数据学习

Haddop集群安装

2020-02-18  本文已影响0人  TZX_0710

https://pan.baidu.com/s/18tEksNn3TUkMilzNtYUxFQ 提取码:9zvo
环境准备 :192.168.153 node01
192.168.154 node02
192.168.155 node03
Jdk采用1.8版本 此处不介绍安装步骤
上传安装包并且解压到文件目录 进入 解压之后的安装包的etc的目录下面的配置文件里面进行修改
hadoop集群涉及配置文件

普通集群安装

  1.  core-site.xml :特定通用hadoop属性配置文件,该配置文件的配置项会覆盖core-default.xml中的相同配置项
    
  2. hdfs-site.xml: 配置文件的配置项会覆盖hdfs-default.xml中的相同配置项.
    
  3. Mapred-site.xml: 配置文件的配置项会覆盖mapred-default.xml的相同配置.
    
  4. Yarn.xml:配置文件的配置项会覆盖yarn-default.xml的相同配置.
    
  5. slave  配置集群节点的地址
    

修改 marped-env.sh yarn-env.sh hadoop-env.sh 文件里面的JAVA_HOME路径地址

<property>
  <!-- 指定HDFS中NameNode的地址 -->
    <name>fs.defaultFS</name>
    <value>hdfs://node01:9000</value>
  </property>
<!--指定hadoop的临时文件目录 运行时产生数据的目录-->
   <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/haddop/full/tmp</value>
  </property>
<!--设置dfs的副本数  不设置默认为3-->
<property>
  <name>dfs.replication</name>
  <value>2</value>
</property>
<!--设置secondary的http地址 端口-->
<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>node01:50090</value>
</property>
 <property>
         <!--指定运行在yarn上-->
             <name>mapreduce.framework.name</name>
             <value>yarn</value>
 </property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
     </property>
<!-- 指定YARN的ResourceManager的地址 -->
     <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node01</value>
     </property>
<!-- Site specific YARN configuration properties -->

配置profile环境变量

export HADOOP_HOME=/usr/local/hadoop-2.7.7
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

source /etc/profile
分发文件

scp -r /etc/profile  root@node02
scp -r /etc/profile root@node03
采用source命令生效

启动hadoop集群

 首次启动初始化 namenode在3个节点分别执行
 hdfs namenode -format
进入 sbin目录进行启动hadoop集群 
先启动hdfs
./start-dfs.sh
./start-yarn.sh 

启动成功 浏览器打开 50070 查案web-ui的地址此处放上2张webui介绍的说明图片




注:在启动完成之后发现一个问题 查看dataNodes上面的dateNode节点 只显示一个,重新格式化了namenode节点等之后也还是只显示一个。最后发现问题,因为我的slaves里面等都是填写的node01、node02在hosts里面配置的别名但是虚拟机的hostname 一直都是local host ,所以在格式化的时候

这个地方的地址一直是127.0.0.1 最后我把虚拟机的hostname改成对应的 /etc/hostname 里面配置的 node01 node02 node 03 重启服务器重新启动集群生效


高可用集群安装 采用zokeeper做高可用集群 一旦主节点 宕机、另一备份节点成为主节点

修改配置文件 hadoop-env.sh marped-env.sh 的JAVA_HOME为本地安装的home目录
修改如下涉及的配置文件

  1. core-site.xml
<!-- 把两个NameNode的地址组装成一个集群mycluster -->
<property>
   <name>fs.defaultFS</name>
   <value>hdfs://mycluster</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/module/hadoop-2.7.6/data/ha/tmp</value>
</property>
<!-- 指定ZKFC故障自动切换转移 -->
<property>
     <name>ha.zookeeper.quorum</name>
     <value>node01:2181,node02:2181,node03:2181</value>
</property>
  1. hdfs-site.xml
<configuration>
<!-- 设置dfs副本数,默认3个 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 完全分布式集群名称 -->
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>
<!-- 集群中NameNode节点都有哪些 -->
<property>
   <name>dfs.ha.namenodes.mycluster</name>
   <value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
   <name>dfs.namenode.rpc-address.mycluster.nn1</name>
   <value>node01:8020</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
   <name>dfs.namenode.rpc-address.mycluster.nn2</name>
   <value>node02:8020</value>
</property>
<!-- nn1的http通信地址 -->
<property>
   <name>dfs.namenode.http-address.mycluster.nn1</name>
   <value>node01:50070</value>
</property>
<!-- nn2的http通信地址 -->
<property>
    <name>dfs.namenode.http-address.mycluster.nn2</name>
    <value>node02:50070</value>
</property>
<!-- 指定NameNode元数据在JournalNode上的存放位置 共享文件夹 -->
<property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
</property>
<!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
<property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
</property>
<!-- 使用隔离机制时需要ssh无秘钥登录-->
<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
</property>
<!-- 声明journalnode服务器存储目录-->
<property>
   <name>dfs.journalnode.edits.dir</name>
   <value>/opt/haddop/data/ha/jn</value>
</property>
<!-- 关闭权限检查-->
<property>
   <name>dfs.permissions.enable</name>
   <value>false</value>
</property>
<!-- 访问代理类:client,mycluster,active配置失败自动切换实现方式-->
<property>
   <name>dfs.client.failover.proxy.provider.mycluster</name>
   <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置自动故障转移-->
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
</property>
<!--开启webhdfs 否则在Haddop的WebUI浏览器点击某些hdfs文件的时候可能会出现
Path does not exist on HDFS or WebHDFS is disabled.
 Please check your path or enable WebHDFS --> 
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<configuration>
  1. mapred-site.xml
<!-- 指定mr框架为yarn方式 -->
 <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
 </property>
<!-- 指定mr历史服务器主机,端口 -->
  <property>   
    <name>mapreduce.jobhistory.address</name>   
    <value>node01:10020</value>   
  </property>   
<!-- 指定mr历史服务器WebUI主机,端口 -->
  <property>   
    <name>mapreduce.jobhistory.webapp.address</name>   
    <value>node01:19888</value>   
  </property>
<!-- 历史服务器的WEB UI上最多显示20000个历史的作业记录信息 -->    
  <property>
    <name>mapreduce.jobhistory.joblist.cache.size</name>
    <value>20000</value>
  </property>
<!--配置作业运行日志 --> 
  <property>
    <name>mapreduce.jobhistory.done-dir</name>
    <value>${yarn.app.mapreduce.am.staging-dir}/history/done</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.intermediate-done-dir</name>
    <value>${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate</value>
  </property>
  <property>
    <name>yarn.app.mapreduce.am.staging-dir</name>
    <value>/tmp/hadoop-yarn/staging</value>
  </property>
</configuration>l
  1. slave
node01
node02
node03
  1. yarn-site.xml
<configuration>
<!-- reducer获取数据的方式 -->
 <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!--启用resourcemanager ha-->
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <!--声明两台resourcemanager的地址-->
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>rmCluster</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>node02</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>node03</value>
    </property>
    <!--指定zookeeper集群的地址-->
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>node01:2181,node02:2181,node03:2181</value>
    </property>
    <!--启用自动恢复-->
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>
    <!--指定resourcemanager的状态信息存储在zookeeper集群-->
    <property>
        <name>yarn.resourcemanager.store.class</name>    
        <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
</configuration>

启动hadoop集群的顺序

  1. 启动zookeeer集群
  2. 先启动 3台虚拟机的journalnode服务 hadoop-daemon.sh start journalnode
  3. 在nn1节点上格式化 hdfs hdfs namenode -format
  4. 启动nn1 上的 namenode hadoop-daemon.sh start namenode
  5. nn2 同步 nn1 的元数据信息 hdfs namenode -bootstrapStandby
  6. 启动 nn2 上的namenode hadoop-daemon.sh start namenode
  7. 在nn1上启动所有 datenode hadoop-daemons.sh start datanode
    8.启动zkfx 在哪台机器上先启动 哪一台就是master节点
[root@node01 ~]hadoop-daemon.sh start zkfc
[root@node02 ~]hadoop-daemon.sh start zkfc
# 在备机启动 
start-yarn.sh
# 在node03节点 启动
yarn-daemon.sh start resourcemanager

node01

node02

node03

注:友情提示 可以直接复制粘贴改就直接改,自己手搓配置可能会出错。

上一篇下一篇

猜你喜欢

热点阅读