您的位置:首页 > 大数据 > Hadoop

hadoop集群搭建

2020-03-06 21:04 621 查看

一、准备工作

1.修改主机名

vim /etc/sysconfig/network

2.系统默认启动级别(修改后reboot生效)

vim /etc/inittab

3.sudo权限

vim /etc/sudoers

4.静态IP

5.关闭防火墙

1)关闭服务service iptables stop

2)关闭开机自启chkconfig iptables off

6.关闭selinux

vim /etc/selinux/config

7.配置主机映射

vim /etc/hosts

8.同步时间(注意时区)

ntpdate cn.pool.ntp.org

9.免密登录

1)生成密钥ssh-keygen

2)发送密钥ssh-copy-id ip号

10.安装jdk

二、搭建集群

1.单机版

1)上传hadoop安装包

2)tar -zxvf hadoop包

3)配置环境变量(记得source一下)

4)启动job测试

hadoop jar hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount input output

2.伪分布式

1)修改hadoop的编译环境(将JAVA_HOME该为绝对路径)

vim /root/apps/hadoop/etc/hadoop/hadoop-env.sh

2)vim /root/apps/hadoop/etc/hadoop/core-site.xml

      #namenode的启动节点    

          <property>
               <name>fs.defaultFS</name>
               <value>hdfs://192.168.2.101:9000</value>
          </property>
           #临时文件目录
             <property>
                  <name>hadoop.tmp.dir</name>
                  <value>/home/hadoop/hadoopdata/tmp</value>
            </property>

3)配置环境变量

4)格式化namenode

     hadoop namenode -format

5)启动进程

start-dfs.sh

start-yarn.sh

6)验证

hdfs集群: http://hadoop01:50070            

 yarn集群: http://hadoop01:8088

3.完全分布式

1)修改hadoop的编译环境(将JAVA_HOME该为绝对路径)

2)cd /root/apps/hadoop/etc/hadoop/

2)vim core-site.xml

          <property>
               <name>fs.defaultFS</name>
               <value>hdfs://192.168.2.101:9000</value>
          </property>
          <property>
              <name>hadoop.tmp.dir</name>
              <value>/root/hadoopdata/tmp</value>
          </property>

3)vim hdfs-site.xml

         <property> namenode文件保存目录
                <name>dfs.namenode.name.dir</name>
                <value>/root/hadoopdata/name</value>
         </property>
        <property>datanode文件保存目录
               <name>dfs.datanode.data.dir</name>
               <value>/root/hadoopdata/data</value>
          </property>
         <property>  副本数
              <name>dfs.replication</name>
               <value>3</value>
         </property>
         <property>  2nn启动节点
              <name>dfs.secondary.http.address</name>
              <value>192.168.2.103:50090</value>
         </property>

4)mv mapred-site.xml-example mapred-site.xml

    vim mapred-site.xml

      <property>  
             <name>mapreduce.framework.name</name>
             <value>yarn</value>
       </property>

5)vim yarn-site.xml

     <property>
             <name>yarn.resourcemanager.hostname</name>
             <value>192.168.2.102</value>
      </property>
      <property>
             <name>yarn.nodemanager.aux-services</name>
             <value>mapreduce_shuffle</value>
        </property>

6)vim slaves(datanode节点IP)

192.168.3.201

192.168.3.202

192.168.3.203

7)将配置好的hadoop包发送至其他节点

8)配置hadoop环境变量(记得source)

9)格式化NameNode

10)启动集群

4.HA

安装zookeeper

1)上传

2)解压

3)mv zoo_sample.cfg zoo.cfg

vim zoo.cfg

(修改为绝对路径,不能是临时目录)

       dataDir=/root/data/zookeeperdata

(文件末尾添加zk集群节点信息)

   server.1=hadoop01:2888:3888
   server.2=hadoop02:2888:3888
   server.3=hadoop03:2888:3888

4)在dataDir目录下创建文件myid

编辑添加唯一编号

5)远程发送zk的安装包

scp -r /root/apps/zookeeper hadoop02:$PWD

6)在其他节点修改myid(切记)

7)配置环境变量

8)启动zk

  zkServer.sh start 

搭建集群

1.规划集群

2.修改核心配置文件

2.core-site.xml

<!-- 配置hdfs的文件系统 /入口  完全分布式:hdfs://hdp01:9000/ 对于高可用集群这里配置的是两个namenode  nameservice(组名) hdfs://bd1810/-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata/</value>
</property>
<!-- 指定 hadoop 工作目录 数据存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/data/hadoopdata/</value>
</property>
<!-- 指定 zookeeper 集群访问地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>

3.hdfs-site.xml

<!-- 指定副本数 -->
<property>
 <name>dfs.replication</name>
 <value>3</value>
</property>

<!--指定 hdfs 的 nameservice 为 bigdata,需要和 core-site.xml 中保持一致 namenode的组名-->
<property>
 <name>dfs.nameservices</name>
 <value>bigdata</value>
</property>

<!-- bd1810 下面有两个 NameNode,分别是 nn1,nn2 -->
<property>
 <name>dfs.ha.namenodes.bigdata</name>
 <value>nn1,nn2</value>
</property>

<!-- 两个namenode  节点的绑定 -->
<!-- nn1 的 RPC 通信地址 -->
<property>
 <name>dfs.namenode.rpc-address.bigdata.nn1</name>
 <value>hdp01:9000</value>
</property>
<!-- nn1 的 http 通信地址 web -->
<property>
 <name>dfs.namenode.http-address.bigdata.nn1</name>
 <value>hadoop01:50070</value>
</property>

<!-- nn2 的 RPC 通信地址 -->
<property>
 <name>dfs.namenode.rpc-address.bigdata.nn2</name>
 <value>hadoop02:9000</value>
</property>
<!-- nn2 的 http 通信地址 -->
<property>
 <name>dfs.namenode.http-address.bigdata.nn2</name>
 <value>hadoop02:50070</value>
</property>

<!-- 指定 NameNode 的 edits 元数据在 (QJM)JournalNode 上的存放位置 -->
<property>
 <name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/bigdata</value>
</property>

<!-- 指定 JournalNode 在本地磁盘存放数据的位置 -->
<property>
 <name>dfs.journalnode.edits.dir</name>
 <value>/home/hadoop/data/hadoopdata/journaldata</value>
</property>

<!-- 开启 NameNode 失败自动切换 -->
<property>
 <name>dfs.ha.automatic-failover.enabled</name>
 <value>true</value>
</property>

<!-- 配置失败自动切换实现类 java代码 -->
<property>
 <name>dfs.client.failover.proxy.provider.bigdata</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行 防止脑裂的-->
<property>
 <name>dfs.ha.fencing.methods</name>
 <value>
 sshfence
 shell(/bin/true)
 </value>
</property>

<!-- 使用 sshfence 隔离机制时需要 ssh 免登陆 配置的远程节点的私钥 -->
<property>
 <name>dfs.ha.fencing.ssh.private-key-files</name>
 <value>/home/hadoop/.ssh/id_rsa</value>
</property>

<!-- 配置 sshfence 隔离机制超时时间 -->
<property>
 <name>dfs.ha.fencing.ssh.connect-timeout</name>
 <value>3000</value>
</property>

4.yarn-site.xml

<!-- 开启 RM 高可用 -->
<property>
 <name>yarn.resourcemanager.ha.enabled</name>
 <value>true</value>
</property>

<!-- 指定 RM 的 cluster id -->
<property>
 <name>yarn.resourcemanager.cluster-id</name>
 <value>yybigdata</value>
</property>
<!-- 指定 RM 的名字 -->
<property>
 <name>yarn.resourcemanager.ha.rm-ids</name>
 <value>rm1,rm2</value>
</property>
<!-- 分别指定 RM 的地址 -->
<property>
 <name>yarn.resourcemanager.hostname.rm1</name>
 <value>hadoop02</value>
</property>
<property>
 <name>yarn.resourcemanager.hostname.rm2</name>
 <value>hadoop03</value>
</property>
<!-- 指定 zk 集群地址 -->
<property>
 <name>yarn.resourcemanager.zk-address</name>
 <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<!-- 要运行 MapReduce 程序必须配置的附属服务 -->
<property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
</property>

<!-- 开启 YARN 集群的日志聚合功能 -->
<property>
 <name>yarn.log-aggregation-enable</name>
 <value>true</value>
</property>
<!-- YARN 集群的聚合日志最长保留时长 -->
<property>
 <name>yarn.log-aggregation.retain-seconds</name>
 <value>86400</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>


5.mapred-site.xml

<!-- 指定 mr 框架为 yarn 方式 -->
<property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
</property>
<!-- 设置 mapreduce 的历史服务器地址和端口号 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop03:10020</value>
</property>
<!-- mapreduce 历史服务器的 web 访问地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop03:19888</value>
</property>

6.slaves
不要空格  不要多空行
hadoop01
hadoop02
hadoop03

7.发送hadoop包到其他节点

8.配置环境变量

9.启动共享日志文件qjm(3个节点都手动启动 )
    hadoop-daemon.sh start journalnode

10.格式化元数据(在其中一个主节点执行)

  hadoop namenode -format

11.将元数据发送另一个namenode一份

scp -r /home/hadoop/data/hadoopdata hadoop02:/home/hadoop/data/

12.启动zk

13.格式化zkfc(在其中一个主节点执行)

hdfs zkfc -formatZK

14.启动hadoop

 

 

  • 点赞
  • 收藏
  • 分享
  • 文章举报
大树245 发布了3 篇原创文章 · 获赞 0 · 访问量 41 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: