zoukankan      html  css  js  c++  java
  • zookeeper、hadoop、hbase集群搭建

    0、首先创建三台虚拟机,在此基础上搭建分布式集群

    创建虚拟机:Mac上安装VMware&搭载CentOS7

    三台设备:

               ip                  hostname

        192.168.77.100        server001

        192.168.77.110        server002

        192.168.77.120       server003

    版本:zookeeper-3.4.9,hadoop-2.7.6,hbase-1.7.1

    1、关闭防火墙,否则集群间无法通信

    systemctl status firewalld   //查看防火墙状态
    
    systemctl stop firewalld  //关闭防火墙
    
    systemctl disable firewalld  //禁用防火墙

    2、这里我们是从网上将资源下载到Mac主机上,然后再将资源拷贝到虚拟机上

    scp -p 22  ware/hadoop-2.7.6.tar.gz  root@192.168.77.120:/var/opt

    3、设置主机名和配置主机hosts

    设置主机名:

    hostnamectl set-hostname server001

    查看 vi /etc/hostname

    配置主机hosts:

    vi /etc/hosts

    添加如下内容

    192.168.77.100  server001
    
    192.168.77.110   server002
    
    192.168.77.120  server003

    4、三台设置间设置ssh免密登录

    首先确保开启了ssh,开启后会在/root目录下有.ssh文件夹

    每台分别执行ssh-keygen -t rsa,连续按3个回车,在.ssh目录下生成id_rsa和id_rsa.pub

    然后分发秘钥:

    在server001上执行 ssh-copy-id server002ssh-copy-id server003,其他两台上同理。

    至此三台之间就可以通过 ssh server001/002/003进行免密登录了。

    5、安装zookeeper

    下载地址:http://archive.apache.org/dist/zookeeper/(下载3.4.9)

    注意:有的高版本执行会报:找不到或无法加载主类 org.apache.zookeeper.ZooKeeperMain

    解压文件:

    tar –zxf zookeeper-3.4.7.tar.gz

    (1)修改zoo.cfg配置

    cd /zookeeper/conf
    
    cp zoo_sample.cfg zoo.cfg
    
    vi zoo.cfg
    
    修改:dataDir=/var/opt/zookeeper/data

    末尾添加:

    server.1=192.168.77.100:2555:3555
    
    server.2=192.168.77.110:2555:3555
    
    server.3=192.168.77.120:2555:3555

    2555是leader端口,3555是follower端口,可以修改。

    (2)将server001上的zookeeper文件拷贝到server002和server002上

    scp -r /var/opt/zookeeper root@server002:/var/opt

    (3)在每台设备上创建id

    创建data目录:mkdir data

    cd data

    vi myid(server001上是1,server002上是2,server003上是3)

    (4)分别在三台机器上启动zk

    ./zkServer.sh start

    查看启动状态:

    ./zkServer.sh status

    6、部署Hadoop集群

    NameNode 和 SecondaryNameNode 不要安装在同一台服务器。ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上。

                       

    (1)下载的Hadoop文件解压:(1-7都在一个节点上操作)

    tar -zxf hadoop-2.7.6.tar.gz

    (2)编辑hadoop-env.sh

    cd /var/opt/hadoop-2.7.6/etc/hadoop
    vi hadoop-env.sh

    修改:

    export JAVA_HOME=/var/opt/jdk1.8.0_181

    export HADOOP_CONF_DIR=/var/opt/hadoop-2.7.6/etc/hadoop

    生效:source hadoop-env.sh

    (3)编辑core-site.xml

    <configuration>
    <!-- 指定namenode的地址 -->
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://server001:8020</value>
    </property>
    <!-- 指定hadoop数据的存储目录  -->
    <property>
       <name>hadoop.tmp.dir</name>
       <value>/var/opt/hadoop-2.7.6/tmp</value>
    </property>
    <!-- 配置 HDFS 网页登录使用的静态用户为 root -->
    <property>
       <name>hadoop.http.staticuser.user</name>
       <value>root</value>
    </property>
    </configuration>

    (4)编辑hdfs-site.xml

    <configuration>
    <!-- nn web 端访问地址-->
    <property>
       <name>dfs.namenode.http-address</name>
       <value>server001:9870</value>
    </property>
    <!-- 2nn web 端访问地址-->
    <property>
       <name>dfs.namenode.secondary.http-address</name>
       <value>server003:9868</value>
    </property>
    </configuration>

    (5)编辑mapred-site.xml

    cp mapred-site.xml.template mapred-site.xml
    vi mapred-site.xml
    <configuration>
    <!-- mapreduce的工作模式:yarn -->
      <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
      </property>
    </configuration>

    (6)编辑yarn-site.xml

    <configuration>
    <!-- 指定 MR 走 shuffle -->
    <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定 ResourceManager 的地址-->
    <property>
       <name>yarn.resourcemanager.hostname</name>
       <value>server002</value>
    </property>
    <!-- 环境变量的继承 -->
    <property>
       <name>yarn.nodemanager.env-whitelist</name>
       <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
    <!-- 开启日志聚集功能 -->
    <property>
       <name>yarn.log-aggregation-enable</name>
       <value>true</value>
    </property>
    <!-- 设置日志聚集服务器地址 -->
    <property>
       <name>yarn.log.server.url</name>
       <value>http://server001:19888/jobhistory/logs</value>
    </property>
    <!-- 设置日志保留时间为 7 天 -->
    <property>
       <name>yarn.log-aggregation.retain-seconds</name>
       <value>604800</value>
    </property>
    </configuration>

    (7)编辑slaves

    vi /var/opt/hadoop-2.7.6/etc/hadoop/slaves
    
    添加:
    server001
    server002
    server003

    (8)把配置好的hadoop拷贝到其他节点

    scp -r hadoop-2.7.6 root@server002:/var/opt/
    scp -r hadoop-2.7.6 root@server003:/var/opt/

    (9)配置环境变量

    vi /etc/profile

    末尾添加:

    export HADOOP_HOME=/var/opt/hadoop-2.7.6
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    生效:source /etc/profile

    (10)群起集群

    vi /var/opt/hadoop-2.7.6/etc/hadoop/workers

    添加:
    server001
    server002
    server003

    (11)启动Hadoop集群

      如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode(注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化)
    hdfs namenode -format
    • 在server001上启动HDFS
    start-dfs.sh

    • 在配置了 ResourceManager 的节点()启动 YARN

    start-yarn.sh

    • web端查看

    查看HDFS的namenode:http://192.168.77.100:9870

    查看 YARN 的 ResourceManager:http://192.168.77.110:8088

     7、部署HBase

    先解压文件:

    tar -zxvf hbase-1.3.1-bin.tar.gz

    (1)hbase-env.sh 修改内容:

    export JAVA_HOME=/var/opt/jdk_1.8.1_144
    export HBASE_MANAGES_ZK=false

    (2)hbase-site.xml 修改内容:

    <configuration>
      <!-- 这个目录是 RegionServer 的共享目录,用来持久化 HBase。特别注意的是 hbase.rootdir 里面的 HDFS 地址是要跟 Hadoop 的 core-site.xml 里面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、端口必须一致 -->
      <property>
        <name>hbase.rootdir</name>
        <value>hdfs://server001:8020/hbase</value>
      </property>
      <!-- 指定是分布式模式 -->
      <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
      </property>
      <!-- 指定master端口,默认也是16000 -->
      <property>
        <name>hbase.master.port</name>
        <value>16000</value>
      </property>
      <!-- 本地文件系统的临时文件夹。可以修改到一个更为持久的目录上。(/tmp会在重启时清除) -->
      <property>
        <name>hbase.tmp.dir</name>
        <value>/var/opt/hbase-1.7.1/tmp</value>
      </property>
      <!-- 列出全部的 ZooKeeper 的主机,用逗号隔开 -->
      <property>
        <name>hbase.zookeeper.quorum</name>
        <value>server001,server002,server003</value>
      </property>
      <!-- ZooKeeper 快照的存储位置,默认值为 /tmp -->
      <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/var/opt/zookeeper/zkData</value>
      </property>
    </configuration>

    (3)配置regionservers

    server001
    server002
    server003

    (4)软连接 hadoop 配置文件到 HBase(当然也可以拷贝过来)

    ln -s /var/opt/hadoop-2.7.6/etc/hadoop/core-site.xml /var/opt/hbase-1.7.1/conf/core-site.xml
    ln -s /var/opt/hadoop-2.7.6/etc/hadoop/hdfs-site.xml /var/opt/hbase-1.7.1/conf/hdfs-site.xml

    (5)将配置好的hbase拷贝到其他两台机器

    scp -r hbase-1.7.1 root@server002:/var/opt
    scp -r hbase-1.7.1 root@server003:/var/opt

    (6)启动Hbase集群

    先启动三台zookeeper

    sh /var/opt/zookeeper/bin/zkServer.sh start

    然后在server001上启动HDFS

    start-dfs.sh

    在server002上启动yarn(也可以不启动)

    start-yarn.sh

    查看启动状态,jps或是浏览器访问:192.168.77.100:9870

    最后在server001上启动hbase,先启动HMaster,再启动HRegionServer

    sh /var/opt/hbase-1.7.1/bin/hbase-daemon.sh start master
    sh /var/opt/hbase-1.7.1/bin/hbase-daemon.sh start regionserver

    查看启动状态,jps或是浏览器访问:192.168.77.100:16010

  • 相关阅读:
    51nod——T1267 4个数和为0
    cf220B莫队
    cf220b
    poj1436水平可见线
    poj2528贴海报,,
    poj3468
    hdu1698
    ural1989 单点更新+字符串hash
    cf Queries on a String
    hdu4605
  • 原文地址:https://www.cnblogs.com/jing-yi/p/15472052.html
Copyright © 2011-2022 走看看