Hadoop安装之zookeeper命令

HDFS+NFS+ZOOKEEPER实现Hadoop高可用集群 HDFS+NFS+ZOOKEEPER实现Hadoop高可用集群;分布式存储、分布式计算平台;ZOOKEEPER安装配置;NFS网络共享存储 阅读详情

Hadoop安装及zookeeper命令

一、zookeeper命令及API

1.zookeeper的数据模型

  • ZooKeeper 的数据模型,在结构上和标准文件系统的非常相似,拥有一个层次的命名空间,都是采用树形层次结构.

在这里插入图片描述

  • ZooKeeper 树中的每个节点被称为—个Znode。和文件系统的目录树一样,ZooKeeper 树中的每个节点可以拥有子节点。

但也有不同之处:

  1. Znode 兼具文件和目录两种特点。既像文件一样维护着数据、元信息、ACL、 时间戳等数据结构,又像目录一样可以作为路径标识的一部分,并可以具有 子 Znode。用户对 Znode 具有增、删、改、查等操作(权限允许的情况下)。
  2. Znode 存储数据大小有限制。ZooKeeper 虽然可以关联一些数据,但并没有 被设计为常规的数据库或者大数据存储,相反的是,它用来管理调度数据, 比如分布式应用中的配置文件信息、状态信息、汇集位置等等。这些数据的 共同特性就是它们都是很小的数据,通常以 KB 为大小单位。ZooKeeper 的服 务器和客户端都被设计为严格检查并限制每个 Znode 的数据大小至多 1M,常规使用中应该远小于此值。
  3. Znode 通过路径引用,如同 Unix 中的文件路径。路径必须是绝对的,因此他 们必须由斜杠字符来开头。除此以外,他们必须是唯一的,也就是说每一个 路径只有一个表示,因此这些路径不能改变。在 ZooKeeper 中,路径由 Unicode 字符串组成,并且有一些限制。字符串"/zookeeper"用以保存管理 信息,比如关键配额信息。
  4. 每个 Znode 由 3 部分组成:
    • stat:此为状态信息, 描述该 Znode 的版本, 权限等信息
    • data:与该 Znode 关联的数据
    • children:该 Znode 下的子节点

2.Znode节点类型

2.1 Znode 有两种,分别为临时节点和永久节点。节点的类型在创建时即被确定,并且不能改变。

  • 临时节点:该节点的生命周期依赖于创建它们的会话。一旦会话结束,临时 节点将被自动删除,当然可以也可以手动删除。临时节点不允许拥有子节点。
  • 永久节点:该节点的生命周期不依赖于会话,并且只有在客户端显示执行删除操作的时候,他们才能被删除。

2.2 Znode 还有一个序列化的特性(FIFO),如果创建的时候指定的话,该 Znode 的名字后面会自动追加一个不断增加的序列号。序列号对于此节点的父节点来说是唯一的,这样便会记录每个子节点创建的先后顺序。它的格式为“%10d”(10 位数字,没有数值的数位用 0 补充,例如“0000000001”)。

2.3 这样便会存在四种类型的 Znode 节点,分别对应:

  • PERSISTENT:永久节点
  • EPHEMERAL:临时节点
  • PERSISTENT_SEQUENTIAL:永久节点、序列化
  • EPHEMERAL_SEQUENTIAL:临时节点、序列化

3.Zookeeper的Shell 客户端操作

3.1 登录Zookeeper客户端
bin/zkCli.sh  -server node01:2181
3.2 Zookeeper客户端操作命令
命令说明参数
create [-s] [-e] path data acl创建Znode-s 指定是顺序节点(永久、序列化)
-e 指定是临时节点
ls path [watch]列出Path下所有子Znode
get path [watch]获取Path对应的Znode的数据和属性
ls2 path [watch]查看Path下所有子Znode以及子Znode的属性
set path data [version]更新节点version 数据版本
delete path [version]删除节点, 如果要删除的节点有子Znode则无法删除version 数据版本
rmr path删除节点, 如果有子Znode则递归删除
setquota -n|-b val path修改Znode配额-n 设置子节点最大个数
-b 设置节点数据最大长度
history列出历史记录
3.3 操作实例

列出Path下的所有Znode

ls /

创建永久节点

create /hello world

创建临时节点:

​ create -e /abc 123

创建永久序列化节点:

create -s /zhangsan boy

创建临时序列化节点:

create -e -s /lisi boy

修改节点数据

set /hello zookeeper

删除节点, 如果要删除的节点有子Znode则无法删除

delete /hello

删除节点, 如果有子Znode则递归删除

rmr /abc

列出历史记录

history

3.4 节点属性

每个 znode 都包含了一系列的属性,通过命令 get,可以获得节点的属性。

在这里插入图片描述

dataVersion:数据版本号,每次对节点进行 set 操作,dataVersion 的值都会增加 1(即使设置的是相同的数据),可有效避免了数据更新时出现的先后顺序问题。

cversion :子节点的版本号。当 znode 的子节点有变化时,cversion 的值就会增加 1。

aclVersion :ACL 的版本号。

cZxid :Znode 创建的事务 id。create

mZxid :Znode 被修改的事务 id,即每次对 znode 的修改都会更新 mZxid。

  • 对于 zk 来说,每次的变化都会产生一个唯一的事务 id,zxid(ZooKeeper Transaction Id)。通过 zxid,可以确定更新操作的先后顺序。例如,如果 zxid1
  • 小于 zxid2,说明 zxid1 操作先于 zxid2 发生,zxid 对于整个 zk 都是唯一的,

ctime:节点创建时的时间戳.

mtime:节点最新一次更新发生时的时间戳.

ephemeralOwner:如果该节点为临时节点, ephemeralOwner 值表示与该节点绑定的 session id. 如果不 是,ephemeralOwner 值为 0.

3.5 Zookeeper的watch机制
  • 通知类似于数据库中的触发器, 对某个Znode设置 Watcher, 当Znode发生变化的时候, WatchManager会调用对应的Watcher
  • 当Znode发生删除, 修改, 创建, 子节点修改的时候, 对应的Watcher会得到通知
  • Watcher的特点
    • 一次性触发 一个 Watcher 只会被触发一次, 如果需要继续监听, 则需要再次添加 Watcher
    • 事件封装: Watcher 得到的事件是被封装过的, 包括三个内容 keeperState, eventType, path
KeeperStateEventType触发条件说明
None连接成功
SyncConnectedNodeCreatedZnode被创建此时处于连接状态
SyncConnectedNodeDeletedZnode被删除此时处于连接状态
SyncConnectedNodeDataChangedZnode数据被改变此时处于连接状态
SyncConnectedNodeChildChangedZnode的子Znode数据被改变此时处于连接状态
DisconnectedNone客户端和服务端断开连接此时客户端和服务器处于断开连接状态
ExpiredNone会话超时会收到一个SessionExpiredExceptio
AuthFailedNone权限验证失败会收到一个AuthFailedException

4.zookeeper的JavaAPI操作

这里操作Zookeeper的JavaAPI使用的是一套zookeeper客户端框架 Curator ,解决了很多Zookeeper客户端非常底层的细节开发工作 。

Curator包含了几个包:

  • curator-framework:对zookeeper的底层api的一些封装
  • curator-recipes:封装了一些高级特性,如:Cache事件监听、选举、分布式锁、分布式计数器等

Maven依赖(使用curator的版本:2.12.0,对应Zookeeper的版本为:3.4.x,如果跨版本会有兼容性问题,很有可能导致节点操作失败):

4.1创建java工程,导入jar包

创建maven java工程,导入jar包

<!-- <repositories>
        <repository>
          <id>cloudera</id>
          <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
        </repository>
      </repositories> -->
<dependencies>
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <version>2.12.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>2.12.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.collections</groupId>
        <artifactId>google-collections</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.25</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <!-- java编译插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.2</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>
4.2 节点的操作
创建永久节点
@Test
public void createNode() throws Exception {
   	/**
   	*param1:重试的间隔时间
   	*param2:重试的最大次数
   	*/
    RetryPolicy retryPolicy = new  ExponentialBackoffRetry(1000, 1);
    //获取客户端对象
    /**
    *param1:要连接的zookeeper服务器列表
    *param2:会话的超时时间
    *param3:链接超时时间
    *param4:重试策略
    */
    CuratorFramework client =     CuratorFrameworkFactory.newClient("192.168.174.100:2181,192.168.174.110:2181,192.168.174.120:2181", 1000, 1000, retryPolicy);
    //调用start开启客户端操作
    client.start();

    //通过create来进行创建节点,并且需要指定节点类型
  client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/hello3/world");

    client.close();
}
创建临时节点
public void createNode2() throws Exception {
    RetryPolicy retryPolicy = new  ExponentialBackoffRetry(3000, 1);
    CuratorFramework client = CuratorFrameworkFactory.newClient("node01:2181,node02:2181,node03:2181", 3000, 3000, retryPolicy);
    client.start();    client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath("/hello5/world");
    Thread.sleep(5000);
    client.close();
}
修改节点数据
/**
 * 节点下面添加数据与修改是类似的,一个节点下面会有一个数据,新的数据会覆盖旧的数据
 * @throws Exception
 */

@Test
public void nodeData() throws Exception {
    RetryPolicy retryPolicy = new  ExponentialBackoffRetry(3000, 1);
    CuratorFramework client = CuratorFrameworkFactory.newClient("node01:2181,node02:2181,node03:2181", 3000, 3000, retryPolicy);
    client.start();
    client.setData().forPath("/hello5", "hello7".getBytes());
    client.close();
}
节点数据查询
/**
 * 数据查询
 */

@Test

public void updateNode() throws Exception {
    RetryPolicy retryPolicy = new  ExponentialBackoffRetry(3000, 1);
    CuratorFramework client = CuratorFrameworkFactory.newClient("node01:2181,node02:2181,node03:2181", 3000, 3000, retryPolicy);
    client.start();
    byte[] forPath = client.getData().forPath("/hello5");
    System.out.println(new String(forPath));
    client.close();
}
节点watch机制
/**
 * zookeeper的watch机制
 * @throws Exception
 */
@Test
public void watchNode() throws Exception {

    RetryPolicy policy = new ExponentialBackoffRetry(3000, 3);

    CuratorFramework client = CuratorFrameworkFactory.newClient("node01:2181,node02:2181,node03:2181", policy);

    client.start();

    // ExecutorService pool = Executors.newCachedThreadPool();  

    //设置节点的cache  
    TreeCache treeCache = new TreeCache(client, "/hello5");  

    //设置监听器和处理过程  
    treeCache.getListenable().addListener(new TreeCacheListener() {  

        @Override  
        public void childEvent(CuratorFramework client, TreeCacheEvent event) throws Exception {  
            ChildData data = event.getData();  
            if(data !=null){  
                switch (event.getType()) { 
                    case NODE_ADDED:  
                        System.out.println("NODE_ADDED : "+ data.getPath() +"  数据:"+ new String(data.getData()));  
                        break;  
                    case NODE_REMOVED:  
                        System.out.println("NODE_REMOVED : "+ data.getPath() +"  数据:"+ new String(data.getData()));  
                        break;  
                    case NODE_UPDATED:  
                        System.out.println("NODE_UPDATED : "+ data.getPath() +"  数据:"+ new String(data.getData()));  
                        break;  
                    default:  
                        break;  
                }  
            }else{  
                System.out.println( "data is null : "+ event.getType());  
            }  
        }  
    });  
    //开始监听  
    treeCache.start();  
    Thread.sleep(50000000);
}

5.Zookeeper以及分布式环境中的假死脑裂

  • 参考链接https://blog.youkuaiyun.com/u010185262/article/details/49910301
  • 假死脑裂
    • 在一个大的集群中往往会有一个master的存在,在长期运行过程中不可避免会出现宕机等等的问题导致master不可用,在出现这样的情况以后往往会对系统产生很大的影响,所以一般的分布式集群中的master都采用了高可用的解决方案来避免这样的情况发生。 master-slaver方式,存在一个master的节点,平时对外服务,同时有一个slaver节点来监控master,监控的同时有某种方式来进行数据同步。假如现在master挂掉了,slaver能很快获知并且迅速切换为新的master。但是在这种方式中,监控切换是一个很大的难题,但是现在Zookeeper的watch和分布式锁机制能比较好的解决这个问题。虽然Zookeeper很好的解决了这个问题,但是它的使用也存在其他的问题,比如脑裂。 导致脑裂的一个根源问题就是假死。
  • 什么叫假死呢?
    • 有一个很重要的问题,就是到底是根据一个什么样的情况来判断一个节点死亡down掉了。在分布式系统中这些都是有监控者来判断的,但是监控者也很难判定其他的节点的状态,唯一一个可靠的途径就是心跳,包括Zookeeper也是使用心跳来判断客户端是否仍然活着。 使用ZooKeeper来做master HA基本都是同样的方式,每个节点都尝试注册一个象征master的临时节点其他没有注册成功的则成为slaver,并且通过watch机制监控着master所创建的临时节点,Zookeeper通过内部心跳机制来确定master的状态,一旦master出现意外Zookeeper能很快获悉并且通知其他的slaver,其他slaver在之后作出相关反应。这样就完成了一个切换。这种模式也是比较通用的模式,基本大部分都是这样实现的,
    • 但是这里面有个很严重的问题,如果注意不到会导致短暂的时间内系统出现脑裂,因为心跳出现超时可能是master挂了,但是也可能是master,zookeeper之间网络出现了问题,也同样可能导致。这种情况就是假死,master并未死掉,但是与ZooKeeper之间的网络出现问题导致Zookeeper认为其挂掉了然后通知其他节点进行切换,这样slaver中就有一个成为了master,但是原本的master并未死掉,这时候client也获得master切换的消息,但是仍然会有一些延时,zookeeper需要通讯需要一个一个通知,这时候整个系统就很混乱可能有一部分client已经通知到了连接到新的master上去了,有的client仍然连接在老的master上如果同时有两个client需要对master的同一个数据更新并且刚好这两个client此刻分别连接在新老的master上,就会出现很严重问题。
  • 是什么原因导致这样情况的出现呢?
    • 主要原因是Zookeeper集群和Zookeeper client判断超时并不能做到完全同步,也就是说可能一前一后,如果是集群先于client发现那就会出现上面的情况。同时,在发现并切换后通知各个客户端也有先后快慢。一般出现这种情况的几率很小,需要master与Zookeeper集群网络断开但是与其他集群角色之间的网络没有问题,还要满足上面那些情况,但是一旦出现就会引起很严重的后果,数据不一致。
  • 如何避免?
    • 在slaver切换的时候不在检查到老的master出现问题后马上切换,而是在休眠一段足够的时间,确保老的master已经获知变更并且做了相关的shutdown清理工作了然后再注册成为master就能避免这类问题了,这个休眠时间一般定义为与Zookeeper定义的超时时间就够了,但是这段时间内系统不可用了

二、hadoop安装

1.Hadoop的介绍

  1. Hadoop最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。

  2. 2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。

    ——分布式文件系统(GFS),可用于处理海量网页的存储

    ——分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。

  3. Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目.

狭义上来说,hadoop就是单独指代hadoop这个软件,

  • HDFS:分布式文件系统
  • MapReduce:分布式计算系统
  • Yarn:分布式样集群资源管理

广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件

在这里插入图片描述

  • 道格 卡丁 Nutch 通用爬虫

    • luncene ES

    • 存储

      • GFS 谷歌的分布式文件系统 --HDFS
      • MAPREDUCE 分布式处理 --mapReduce
      • BigTable --hbase(可修改)
    • 分而治之

2.Hadoop的历史版本和发行版公司

2.1 Hadoop历史版本

​ 1.x版本系列:hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等

​ 2.x版本系列:架构产生重大变化,引入了yarn平台等许多新特性

​ 3.x版本系列:加入多namenoode新特性

2.2 Hadoop三大发行版公司
  • 免费开源版本apache:

    http://hadoop.apache.org/

    优点:拥有全世界的开源贡献者,代码更新迭代版本比较快,

    缺点:版本的升级,版本的维护,版本的兼容性,版本的补丁都可能考虑不太周到,

    apache所有软件的下载地址(包括各种历史版本):

    http://archive.apache.org/dist/

  • 免费开源版本hortonWorks:

    https://hortonworks.com/

    hortonworks主要是雅虎主导Hadoop开发的副总裁,带领二十几个核心成员成立Hortonworks,核心产品软件HDP(ambari),HDF免费开源,并且提供一整套的web管理界面,供我们可以通过web界面管理我们的集群状态,web管理界面软件HDF网址(http://ambari.apache.org/)

  • 软件收费版本ClouderaManager:

    https://www.cloudera.com/

    cloudera主要是美国一家大数据公司在apache开源hadoop的版本上,通过自己公司内部的各种补丁,实现版本之间的稳定运行,大数据生态圈的各个版本的软件都提供了对应的版本,解决了版本的升级困难,版本兼容性等各种问题

3.hadoop的架构模型

1.x的版本架构模型介绍

在这里插入图片描述

文件系统核心模块:

  • NameNode:集群当中的主节点,管理元数据(文件的大小,文件的位置,文件的权限),主要用于管理集群当中的各种数据(只能有一个,会出现单机故障)
  • secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理(不存储元数据)
  • DataNode:集群当中的从节点,主要用于存储集群当中的各种数据

数据计算核心模块:

  • JobTracker:接收用户的计算请求任务,并分配任务给从节点(任务的接收和任务的分配)
  • TaskTracker:负责执行主节点JobTracker分配的任务(执行任务)
2.x的版本架构模型介绍
第一种:NameNode与ResourceManager单节点架构模型

在这里插入图片描述

文件系统核心模块:

  • NameNode:集群当中的主节点,主要用于管理集群当中的各种数据
  • secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理
  • DataNode:集群当中的从节点,主要用于存储集群当中的各种数据

数据计算核心模块:

  • ResourceManager:接收用户的计算请求任务,并负责集群的资源分配

    • AppMaster:负责任务的分配
  • NodeManager:负责执行主节点APPmaster分配的任务

第二种:NameNode单节点与ResourceManager高可用架构模型

在这里插入图片描述

文件系统核心模块:

  • NameNode:集群当中的主节点,主要用于管理集群当中的各种数据
  • secondaryNameNode:主要能用于hadoop当中元数据信息的辅助管理
  • DataNode:集群当中的从节点,主要用于存储集群当中的各种数据

数据计算核心模块:

  • ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分,通过zookeeper实现ResourceManager的高可用(资源:内存、cpu)
  • NodeManager:负责执行主节点ResourceManager分配的任务

ZKFailoverController(ZKFC)

  • 是一个新的组件,它是一个ZooKeeper客户端,它还监视和管理NameNode的状态。运行NameNode的每台机器也运行ZKFC,他们之间是一对一的关系。
    • 健康监测-
      ZKFC定期使用健康检查命令调用其本地NameNode。只要NameNode以健康的状态及时响应,ZKFC就会认为节点是健康的。
      如果节点已崩溃、冻结或以其他方式进入不健康状态,则健康监视器将将其标记为不健康。
    • ZooKeeper会话管理
      当本地NameNode健康时,ZKFC在ZooKeeper中举行一个开放的会话。
      如果本地NameNode是活动的,它也持有一个特殊的“锁”。此锁使用ZooKeeptor对“临时”节点的支持;如果会话过期,则将自动删除锁节点。
    • 基于ZooKeeper的选举
      如果本地NameNode是健康的,而ZKFC认为目前没有其他节点持有锁,
      它本身就会尝试获取锁。如果它成功了,那么它已经“赢得了选举”,并负责运行故障转移以使其本地NameNode活动。故障转移过程类似于上面描述的手动故障转移:首先,如果需要,对前一个活动进行隔离,然后本地NameNode转换到活动状态。
第三种:NameNode高可用与ResourceManager单节点架构模型

在这里插入图片描述

文件系统核心模块-HDFS:

  • NameNode:集群当中的主节点,主要用于管理集群当中的各种数据,其中nameNode可以有两个,形成高可用状态
  • DataNode:集群当中的从节点,主要用于存储集群当中的各种数据
  • JournalNode:文件系统元数据信息管理

数据计算核心模块-MapReduce:

  • ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分
  • NodeManager:负责执行主节点ResourceManager分配的任务
第四种:NameNode与ResourceManager高可用架构模型

在这里插入图片描述

文件系统核心模块-HDFS:

  • NameNode:集群当中的主节点,主要用于管理集群当中的各种数据,一般都是使用两个,实现HA高可用
    • 没有secondaryNameNode
  • JournalNode:元数据信息管理进程,一般都是奇数个
    • zookeeper可以防止脑裂情况(两个namenode元数据不一致,主namenode写,副namenode读)
  • DataNode:从节点,用于数据的存储

数据计算核心模块-MapReduce:

  • ResourceManager:Yarn平台的主节点,主要用于接收各种任务,通过两个,构建成高可用

  • NodeManager:Yarn平台的从节点,主要用于处理ResourceManager分配的任务

4.apache版本hadoop重新编译

4.1为什么要编译hadoop

​ 由于appache给出的hadoop的安装包没有提供带C程序访问的接口,所以我们在使用本地库(本地库可以用来做压缩,以及支持C程序等等)的时候就会出问题,需要对Hadoop源码包进行重新编译.

4.2编译环境的准备
4.2.1:准备linux环境

​ 准备一台linux环境,内存4G或以上,硬盘40G或以上,我这里使用的是Centos6.9 64位的操作系统(注意:一定要使用64位的操作系统)

4.2.2:虚拟机联网,关闭防火墙,关闭selinux

关闭防火墙命令:

service  iptables   stop
chkconfig   iptables  off 

关闭selinux

vim /etc/selinux/config

在这里插入图片描述

4.2.3:安装jdk1.7

注意hadoop-2.7.5 这个版本的编译,只能使用jdk1.7,如果使用jdk1.8那么就会报错

查看centos6.9自带的openjdk

rpm -qa | grep java

在这里插入图片描述

将所有这些openjdk全部卸载掉

rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 tzdata-java-2016j-1.el6.noarch java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64

注意:这里一定不要使用jdk1.8,亲测jdk1.8会出现错误

将我们jdk的安装包上传到/export/softwares(我这里使用的是jdk1.7.0_71这个版本)

解压我们的jdk压缩包

统一两个路径

mkdir -p /export/servers
mkdir -p /export/softwares
cd /export/softwares
tar -zxvf jdk-7u71-linux-x64.tar.gz -C ../servers/

配置环境变量

vim /etc/profile

export JAVA_HOME=/export/servers/jdk1.7.0_75
export PATH=:$JAVA_HOME/bin:$PATH

在这里插入图片描述

让修改立即生效

source /etc/profile

4.2.4:安装maven

这里使用maven3.x以上的版本应该都可以,不建议使用太高的版本,强烈建议使用3.0.5的版本即可

将maven的安装包上传到/export/softwares

然后解压maven的安装包到/export/servers

cd /export/softwares/
tar -zxvf apache-maven-3.0.5-bin.tar.gz -C ../servers/

配置maven的环境变量

vim /etc/profile

export MAVEN_HOME=/export/servers/apache-maven-3.0.5
export MAVEN_OPTS="-Xms4096m -Xmx4096m"
export PATH=:$MAVEN_HOME/bin:$PATH

在这里插入图片描述

让修改立即生效

source /etc/profile

解压maven的仓库

tar -zxvf mvnrepository.tar.gz -C /export/servers/

修改maven的配置文件

cd  /export/servers/apache-maven-3.0.5/conf
vim settings.xml
<localRepository>/export/servers/mvnrepository/</localRepository>

指定我们本地仓库存放的路径

在这里插入图片描述

添加一个我们阿里云的镜像地址,会让我们下载jar包更快

 <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>

在这里插入图片描述

4.2.5:安装findbugs

解压findbugs

tar -zxvf findbugs-1.3.9.tar.gz -C ../servers/

配置findbugs的环境变量

vim /etc/profile

export FINDBUGS_HOME=/export/servers/findbugs-1.3.9
export PATH=:$FINDBUGS_HOME/bin:$PATH

在这里插入图片描述

让修改立即生效

source /etc/profile

4.2.6:在线安装一些依赖包
yum install autoconf automake libtool cmake
yum install ncurses-devel
yum install openssl-devel
yum install lzo-devel zlib-devel gcc gcc-c++

bzip2压缩需要的依赖包

yum install -y  bzip2-devel
4.2.7:安装protobuf

解压protobuf并进行编译

cd  /export/softwares
tar -zxvf protobuf-2.5.0.tar.gz -C ../servers/
cd   /export/servers/protobuf-2.5.0
./configure
make && make install
4.2.8、安装snappy
cd /export/softwares/
tar -zxf snappy-1.1.1.tar.gz  -C ../servers/
cd ../servers/snappy-1.1.1/
./configure
make && make install
4.2.9:编译hadoop源码

对源码进行编译

cd  /export/softwares
tar -zxvf hadoop-2.7.5-src.tar.gz  -C ../servers/
#tar -zxvf hadoop-2.7.5.tar.gz  -C ../servers/
cd  /export/servers/hadoop-2.7.5

编译支持snappy压缩:

mvn package -DskipTests -Pdist,native -Dtar -Drequire.snappy -e -X

编译完成之后我们需要的压缩包就在下面这个路径里面

/export/servers/hadoop-2.7.5/hadoop-dist/target

5、Hadoop安装

集群规划

服务器IP192.168.174.100192.168.174.110192.168.174.120
主机名node01node02node03
NameNode是否否
SecondaryNameNode是否否
dataNode是是是
ResourceManager是否否
NodeManager是是是
第一步:上传apache hadoop包并解压

解压命令

cd /export/softwares
tar -zxvf hadoop-2.7.5.tar.gz -C ../servers/
cd /export/servers/hadoop-2.7.5/
bin/hadoop.sh checknative

在这里插入图片描述

第二步:修改配置文件
修改core-site.xml

第一台机器执行以下命令

cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim  core-site.xml
<configuration>

    <!--  指定集群的文件系统类型:分布式文件系统 -->
	<property>
		<name>fs.default.name</name>
		<value>hdfs://node01:8020</value>
	</property>
    <!--  指定临时文件缓存地址 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/export/servers/hadoop-2.7.5/hadoopDatas/tempDatas</value>

	</property>

	<!--  缓冲区大小,实际工作中根据服务器性能动态调整 -->

	<property>
		<name>io.file.buffer.size</name>
		<value>4096</value>
	</property>

	<!--  开启hdfs的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟;0代表禁用垃圾桶机制 -->
	<property>
		<name>fs.trash.interval</name>
		<value>10080</value>
	</property>
</configuration>

修改hdfs-site.xml

第一台机器执行以下命令

cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim hdfs-site.xml

<configuration>
    <!--  负责日志和快照 -->
	 <property>
			<name>dfs.namenode.secondary.http-address</name>
			<value>node01:50090</value>
	</property>
	<!--  指定namenode的访问地址和端口;高可用配置格式node01:50070,node02:50070 -->
	<property>
		<name>dfs.namenode.http-address</name>
		<value>node01:50070</value>
	</property>
    <!--  指定namenode元数据的存储位置 -->
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas,file:///export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas2</value>
	</property>
	<!--  定义dataNode数据存储的节点位置,实际工作中,一般先确定磁盘的挂载目录,然后多个目录用,进行分割,不同目录放在不同磁盘下  -->
	<!-- 这里挂载两个磁盘,其实是磁盘的重用,比如linux磁盘40G,那么显示总内存就会有80G,但是实际能存放只要40G-->
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas,file:///export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas2</value>
	</property>	
    
    <!--  指定namenode日志文件的存放位置 -->
	<property>
		<name>dfs.namenode.edits.dir</name>
		<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/nn/edits</value>
	</property>

    <!--  快照 -->
	<property>
		<name>dfs.namenode.checkpoint.dir</name>
		<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/snn/name</value>
	</property>
    
	<property>
		<name>dfs.namenode.checkpoint.edits.dir</name>
		<value>file:///export/servers/hadoop-2.7.5/hadoopDatas/dfs/snn/edits</value>
	</property>

    <!--  文件切片的副本个数 -->
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>

	<!--  设置HDFS的文件权限 false关闭-->
	<property>
		<name>dfs.permissions</name>
		<value>false</value>
	</property>
	<!--  设置一个文件切片的大小:128M -->
    <property>
		<value>134217728</value>
	</property>

</configuration>

修改hadoop-env.sh

第一台机器执行以下命令

cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim  hadoop-env.sh

export JAVA_HOME=/export/servers/jdk1.8.0_141

修改mapred-site.xml

第一台机器执行以下命令

cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim  mapred-site.xml

<configuration>
    <!--  MapReduce的运行环境指定为yarn,这个缺少,history的日志中不会出现job的信息 -->
    <property>
    	<name>mapreduce.framework.name</name>
    	<value>yarn</value>
	</property>
    <!--  开启MapReduce小任务模式  Uber模式是Hadoop2.0针对MR小作业的优化机制。通过mapreduce.job.ubertask.enable来设置是否开启小作业优化,默认为false。https://blog.youkuaiyun.com/qianshangding0708/article/details/47702057-->
	<property>
		<name>mapreduce.job.ubertask.enable</name>
		<value>true</value>
	</property>

	<!--  设置历史任务的主机和端口 -->
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>node01:10020</value>
	</property>
 	<!--  设置网页访问历史任务的主机和端口 -->
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>node01:19888</value>
	</property>

</configuration>


修改yarn-site.xml

第一台机器执行以下命令

cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim  yarn-site.xml

<configuration>
    <!--  配置yarn主节点的位置 -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>node01</value>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<!--  开启日志聚合功能,将日志聚合在一起显示 -->
	<property>
		<name>yarn.log-aggregation-enable</name>
		<value>true</value>
	</property>
    <!--  设置聚合日志在hdfs上的保存时间 -->
	<property>
		<name>yarn.log-aggregation.retain-seconds</name>
		<value>604800</value>
	</property>
    <!--  设置yarn集群的内存分配方案 -->
	<property>    
		<name>yarn.nodemanager.resource.memory-mb</name>    
		<value>20480</value>
	</property>
	<property>  
        	 <name>yarn.scheduler.minimum-allocation-mb</name>
         	<value>2048</value>
	</property>
	<property>
		<name>yarn.nodemanager.vmem-pmem-ratio</name>
		<value>2.1</value>
	</property>

</configuration>

修改mapred-env.sh

第一台机器执行以下命令

cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim  mapred-env.sh

export JAVA_HOME=/export/servers/jdk1.8.0_141

修改slaves

修改slaves文件,然后将安装包发送到其他机器,重新启动集群即可

第一台机器执行以下命令

cd  /export/servers/hadoop-2.7.5/etc/hadoop
vim slaves

#配置从机
node01
node02
node03

第一台机器执行以下命令

mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/tempDatas
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/namenodeDatas2
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/datanodeDatas2
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/nn/edits
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/snn/name
mkdir -p /export/servers/hadoop-2.7.5/hadoopDatas/dfs/snn/edits

安装包的分发

第一台机器执行以下命令

cd  /export/servers/
scp -r hadoop-2.7.5 node02:$PWD
scp -r hadoop-2.7.5 node03:$PWD

第三步:配置hadoop的环境变量

三台机器都要进行配置hadoop的环境变量

三台机器执行以下命令

vim  /etc/profile

export HADOOP_HOME=/export/servers/hadoop-2.7.5
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

配置完成之后生效

source /etc/profile

第四步:启动集群

要启动 Hadoop 集群,需要启动 HDFS 和 YARN 两个模块。
注意: 首次启动 HDFS 时,必须对其进行格式化操作。 本质上是一些清理和
准备工作,因为此时的 HDFS 在物理上还是不存在的。

hdfs namenode -format 或者 hadoop namenode –format

准备启动

第一台机器执行以下命令

cd  /export/servers/hadoop-2.7.5/
bin/hdfs namenode -format
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver

三个端口查看界面

http://node01:50070/explorer.html#/ 查看hdfs

http://node01:8088/cluster 查看yarn集群

http://node01:19888/jobhistory 查看历史完成的任务

  • core-site.xml 集群的核心配置,namenode高可用
  • hdfs-site.xml HDFS分布式文件系统的相关配置
  • hadoop-env.sh jdk hdfs相关日志
  • mapred-site.xml mapreduce相关设置
  • yarn-site.xml yarn 资源平台设置
  • mapred-env.sh jdk MR日志

安装包的分发

第一台机器执行以下命令

cd  /export/servers/
scp -r hadoop-2.7.5 node02:$PWD
scp -r hadoop-2.7.5 node03:$PWD

第三步:配置hadoop的环境变量

三台机器都要进行配置hadoop的环境变量

三台机器执行以下命令

vim  /etc/profile

export HADOOP_HOME=/export/servers/hadoop-2.7.5
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

配置完成之后生效

source /etc/profile

第四步:启动集群

要启动 Hadoop 集群,需要启动 HDFS 和 YARN 两个模块。
注意: 首次启动 HDFS 时,必须对其进行格式化操作。 本质上是一些清理和
准备工作,因为此时的 HDFS 在物理上还是不存在的。

hdfs namenode -format 或者 hadoop namenode –format

准备启动

第一台机器执行以下命令

cd  /export/servers/hadoop-2.7.5/
bin/hdfs namenode -format
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver

三个端口查看界面

http://node01:50070/explorer.html#/ 查看hdfs

http://node01:8088/cluster 查看yarn集群

http://node01:19888/jobhistory 查看历史完成的任务

  • core-site.xml 集群的核心配置,namenode高可用
  • hdfs-site.xml HDFS分布式文件系统的相关配置
  • hadoop-env.sh jdk hdfs相关日志
  • mapred-site.xml mapreduce相关设置
  • yarn-site.xml yarn 资源平台设置
  • mapred-env.sh jdk MR日志
  • slaves 结点
Hadoop集群搭建(hadoop+zookeeper+hbase)Ubuntu14.04 以Ubuntu14.04为模板搭建小集群一个namenode和2个datanode(hadoop集群) 阅读详情

相关推荐

绿联NAS使用docker部署immich【pro系统】

随后去绿联你想要存放immich的地方创建一个文件夹,便于区分,如图,我创建了一个immich的文件夹。1.进入文件夹后面是有斜杠的(tips:只需要敲击前面几个字母,按tab键自动补全)cd:进入路径,1.可以是当前的下一层相对路径 2.也可以是完整的全路径。前言:好像没有绿联的教程,刚好自己也有需求,就顺便记录了。如果你的挂载实战情况比较复杂,接下来是喂到胃里的知识点。】下载文件(群晖的,别慌,能用),两份,红框的就是。首先,没什么好说的,去immich官网【点击1.终端,2.新增,3.确定。

weixin_45343644的博客 1778

hadoop、zk、kafka命令集合

1 Hadoop命令 1.1点单启动和关闭 -- 可以将后面 namenode 换成 datanode,secondarynamenode,resourcemanager,nodemanager [atguigu@hadoop112 ~]$ hdfs --daemon start namenode [atguigu@hadoop112 ~]$ hdfs --daemon stop namenode 1.2群起集群 [atguigu@hadoop112 hadoop-3.1.3]$ ./sbin/stop

m0_47668312的博客 291

C#读取CAD文件(dwg/dxf)并处理

项目要求识别CAD图纸(图纸内容与现实事物比例是1:1)中的内容,并提取出一些关键信息。这里的CAD图纸是指CAD文件,包含多种格式,dwg/dxf/dwf/stl/pdf等等。识别其中内容,主要指文件中的图元信息(也叫实体Entity),指线段、圆弧、矩形等图形元素。得到图元基础信息(比如长度、坐标、粗细)后,进一步做处理(如得到交点、得到线段间间隔、圆弧与线段切点等)。听起来有点难,因为作为软件工程师,对CAD相关事物并不了解,它是未知的;

三千幻想乡 1万+

YOLO ZOO:YOU ONLY LOOK ONCE ZOO

YOLO ZOO:YOU ONLY LOOK ONCE ZOO

Change ZH的博客 9966

SAP 财务快速记账之—G/L Item Fast Entry

SAP FICO 运维解决方案

lijinbao171022的博客 1646

手把手教你用光耦搭建安全隔离电路:从洗衣机控制板到PLC输入模块实战

本文通过洗衣机控制板驱动高压电机和PLC输入模块采集现场信号两个实战场景,手把手教你使用光耦搭建安全隔离电路。文章详细解析了电路架构、关键器件选型、参数计算、仿真验证及PCB布局避坑技巧,并对比了光耦与数字隔离器的适用场景,帮助电子工程师掌握这门保障系统稳定与安全的必备技能。

h6j7k8l9p0的博客 462

CentOS7安装Zookeeper单机版

首先创建 zookeeper 文件夹 mkdir -p /usr/local/zookeeper 下载zookeeper压缩包 wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz   把zookeeper包解压到zookeeper目录下 tar -zxvf zoo...

水越帆的博客 387

招标信息爬取工具

一个能帮你节省大量时间的实用小工具,我自己用了挺久,分享出来给有需要的朋友

qq_56877290的博客 834

zkCli.sh命令使用

zkCli.sh命令 想要用zkClient链接zookeeper,首先执行如下命令,连接到zookeeper server ./zkCli.sh -server localhost:2181 help命令 help命令用于查询客服端所支持的所用的命令,执行help,输入如下: ZooKeeper -server host:port cmd args stat path [watch] ...

西北角稳 1万+

CesiumForUnreal实现地形等高线效果

CesiumForUnreal实现地形等高线效果

专注GIS开发 3437

第七天 Labview进阶(7.4 NI Vision简单使用)

NIVision机器视觉软件使用指南 摘要:NIVision是National Instruments推出的高效机器视觉软件,具有硬件无缝集成、图形化编程和工业级部署等优势。本文介绍了NIVision的安装步骤(需Vision Acquisition和Vision Development模块)及三个典型应用案例:1)实物检测通过IMAQCreate等模块实现物体识别与坐标定位;2)OCR检测利用IMAQOCR系列模块完成字符识别;3)几何模板匹配使用IMAQLearnGeometricPattern等模块实

weixin_38637405的博客 771

Hadoop 集群下安装 ZooKeeper 以及 ZooKeeper命令行操作

上传ZooKeeper安装文件 在centos01节点中,利用ftp工具将zookeeper-3.4.10.tar.gz上传到/opt/softwares/目录中,并进入该目录,将其解压到目录/opt/modules/文件夹: tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/modules 编写配置文件 在ZooKeeper安装目录下新建文件夹dataDir,用于存放ZooKeeper相关数据 在ZooKeeper安装目录下的conf文件夹中新建配置文件zoo.cf

qq_43613793的博客 571

Python 爬虫实战:分析 AJAX 请求抓取搜狐新闻数据

在Web 2.0时代,大量网站采用AJAX技术实现动态内容加载。传统基于静态HTML解析的爬虫技术(如BeautifulSoup)已无法应对这类场景。本文将以搜狐新闻为实战目标,详解如何通过分析AJAX请求接口实现动态新闻数据的精准抓取。

yansideyucsdn的博客 1750

(3)大数据全家桶安装说明文档_端口/命令列表:Hadoop、hive、kafka、storm、flume、anaconda、mysql、redis、spark、zookeeper

1,zookeeper 端口 name port client 2181 leader选举 2888 服务通信端口 3888 命令 name command 启动命令 zkServer.sh start 停止命令 zkServer.sh stop 重启命令 zkServer.sh restart 查看集群节点状态 zkServer.sh status 2,redis 端口 name port client 6379

果冻_Jump 353

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Hadoop学习(5)-zookeeper的安装和命令行,java操作

zookeeper是干嘛的呢 Zookeeper的作用1.可以为客户端管理少量的数据kvkey:是以路径的形式表示的,那就意味着,各key之间有父子关系,比如/ 是顶层key用户建的key只能在/ 下作为子节点,比如建一个key: /aa 这个key可以带value数据也可以建一个key: /bb也可以建key: /aa/xx 2.可以为客户端监听指定数据节点的状态,并在...

weixin_30323961的博客 130

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

hadoop | 服务器分布式安装hadoop,hbase,zookeeper,phoenix,spark | 集群启动顺序 | hbase命令

文章目录系统与版本集群结构安装 系统与版本 在vSphere ESXI服务器中安装大数据集群,系统镜像为CentOS-7-x86_64-Minimal-1908.iso 版本 CentOS-7-x86_64-Minimal-1908.iso jdk-8u211-linux-x64 apache-phoenix-5.0.0-HBase-2.0-bin apache-zookeeper-3.5.5-bin hadoop-3.1.2 hbase-2.0.5 spark-2.

我是一块小石头 1606

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Zookeeper安装部署

是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。echo ---------- zookeeper $i 停止 ------------echo ---------- zookeeper $i 状态 ------------echo ---------- zookeeper $i 启动 ------------是这个服务器Follower与集群中的Leader服务器交换信息的端口;

kkevin2的博客 205

Hadoop入门之Hbase得安装和简单Shell使用

一,HBase安装 (HBase依赖Hadoop集群 ) 1.安装Zookeeper集群 参考此篇中ZK集群搭建过程: http://blog.youkuaiyun.com/sqh201030412/article/details/51396427 2.HBase集群搭建 下载安装包: wget http://archive.apache.org/dist/h

筑梦者 656

五节点hadoop HA安装教程

五节点HadoopHA安装教程: Master1 namenode,resourcemanager,nodemanager,datanode,journalnode, DFSZKFailoverController Master2 namenode,resourcemanager,nodemanager,datanode,journalnode, DFSZKFailoverController S...

AntKengElephant的博客 203

mac hadoop安装和伪分布hbase安装

参考: https://blog.youkuaiyun.com/liaoningxinmin/article/details/85992752 https://blog.youkuaiyun.com/vbirdbest/article/details/88232702 hbase链接hdfs,zookeeper问题: hmaster消失,hbase shell 链接zookeeper问题 ...

weixin_42357472的博客 389

大数据Hadoop之——Hbase下载安装部署

解决HBase和Hadoop的log4j兼容性(冲突)问题,修改HBase的jar包,使用Hadoop的jar包。

qq_41946216的博客 890

hadoop、spark、zookeeper、hbase、hive集群安装

在master节点,使用命令"hbase-daemon.sh stop master",等待一会发现slave1成为master,当HBase的master节点故障后,ZooKeeper会从备份中自动推选一个作为master.安装在hadoop的namenode上(也就是主节点上:node4上),上传安装文件到(可以根据自己的环境,目录可以自定义)/opt/software/apache-hive-2.1.0-bin.tar.gz。并执行命令"source /etc/profile"使配置的环境变量生效。

lunhuicnm的博客 878

Hadoop 2.9.2 HA安装

Hadoop 2.9.2 HA安装,命令顺序修正 关于hadoop 的几种安装方式,以及理论,这里已经说的很清楚。 但其中Hadoop HA 的安装,命令顺序有所不对,以及不全,本篇文章以楼主亲身经历,来补充完整,使刚开始的同学可以顺利进行安装。 各种配置文件在文章末尾有,话不多说,开始。 HA集群 启动顺序,无特殊说明的命令都在主节点上执行 1 先启动各个节点的 zookeeper。 bin/...

MooKee_cc的博客 802

Hadoop 高可用集群完全分布式安装教程一篇就够用(zookeeper、spark、hbase、mysql、hive)

Hadoop 高可用集群完全分布式安装教程(zookeeper、spark、hbase、mysql、hive)

m0_67821723的博客 4226

zookeeper+hadoop+hbase分布式+高可用集群部署

- 用于序列文件的缓冲区大小。-rw-r--r--. 1 root root 1506370 9月 4 14:55 htrace-core4-4.2.0-incubating.jar。-rw-r--r--. 1 root root 15322 9月 4 14:55 findbugs-annotations-1.3.9-1.jar。-rw-r--r--. 1 root root 12244 9月 4 14:55 slf4j-log4j12-1.7.25.jar。

2201_75773099的博客 262
上一篇: HBase预分区、rowKey设计、协处理、调优
下一篇: HDFS概述(上)
Imflash
博客等级 码龄8年 66粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值