大数据集群安装

  • 写在前头
  • 集群安装部署
    • Hadoop
    • HA与ZOOKEEPER
    • HBASE
    • HIVE
    • FLUME
    • KAFKA
    • SPARK
    • Kylin
    • Kafka-eagel
    • 问题排查

写在前头

本文就是一些个人安装 Apache Hadoop集群(包括其一些生态组件)时的一些过程。

集群安装部署

Hadoop

  1. 确定集群数,最好为奇数台

  2. 修改hosts文件映射(最好保证机器的ip为静态ip)

  3. 上传Hadoop,jdk压缩包,并解压

  4. 配置环境变量

  5. 关闭防火墙

    # 查看防火墙状态
    chkconfig iptables --list
    # 永久关闭防火墙
    chkconfig iptables off
    
  6. 安装ssh,并设置无秘登录

  7. 修改Hadoop的配置文件($HADOOP_HOME/etc/hadoop/)

    1. 修改Hadoop-env.sh文件

      export JAVA_HOME=${JAVA_HOME} # 将文件中的此行换成下一行
      export JAVA_HOME=/home/phoenix/apps/jdk
      
    2. 修改hdfs-site.xml文件

      <property><!--配置系统的数据自动备份的数量,默认三份-->    <name>dfs.replication</name><value>2</value>
      </property>
      <property><!--设置namenode的ip及端口号,hadoop2.0之前默认9000.之后默认8020端口--><name>dfs.namenode.rpc-address</name><value></value>
      </property>
      <property><!--设置namenode的文件目录,默认为${hadoop.tmp.dir}/dfs/name--><name>dfs.namenode.name.dir</name><value></value>
      </property>
      <property><!--HDFS的datanode的文件存储目录,默认为${hadoop.tmp.dir}/dfs/data--><name>dfs.datanode.data.dir</name><value></value>
      </property>
      <property><!--HDFS的权限,默认为true,即用户连接时需要检查其权限--><name>dfs.permissions.enabled</name><value>false</value>
      </property>
      
    3. 修改core-site.xml文件

      <property><!--设置hdfs所存放的文件目录。默认在/tmp/hadoop-${user.name}文件中--><name>hadoop.tmp.dir</name><value></value>
      </property>
      
    4. mapred-site.xml.template文件更名为mapred-site.xml,并修改配置

      <property><!--设置mr的执行框架,默认为local本地执行--><name>mapreduce.framework.name</name><value>yarn</value>
      </property>
      
    5. 修改yarn-site.xml文件

      <property><name>yarn.nodemanager.aux-services</name><value></value><!--<value>mapreduce_shuffle</value>-->
      </property>
      <property><name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value>
      </property>
      
    6. 修改slaves文件

      添加要作为从节点的主机名(要保证该主机名能够映射成ip地址)或者ip
      slave1
      slave2
      ...
      
  8. 为slave设置配置信息(此处为了简略,将主机的配置信息发送到从节点)

  9. 格式化集群

    hdfs namenode -format
    
  10. 启动/停止集群

    #开启集群
    start-dfs.sh
    #开启yarn
    start-yarn.sh
    #关闭集群
    stop-dfs.sh
    

HA与ZOOKEEPER

作为一个集群,当其namenode节点无效时是最为致命的,因而我们需要使其高可用。

  1. 上传zookeeper安装包,解压并配置环境变量

  2. 修改zookeeper配置${zookeeper_home}​/conf下的文件

    1. 将zoo_example.cfg文件改为zoo.cfg
    2. 修改datadir属性,即zookeeper的数据文件所在的位置(如果你觉得有必要的话),默认为/tmp/zookeeper文件夹
    3. 添加集群信息 server.N=YYY:A:B,其中N代表服务器编号,即myid的值;YYY代表主机ip;A代表LF通信端口,一般使用2888;B代表选举端口,一般为3888。
    4. 在上面datadir属性指定的目录下创建名为 myid 的文件,其内容为所对应的myid的值。保证集群中每个节点的myid是不一致的。
  3. 修改配置文件

    1. 修改core-site.xml

      <property><name>ha.zookeeper.quorum</name><description>A list of ZooKeeper server addresses, separated by commas, that areto be used by the ZKFailoverController in automatic failover.</description><value>master:2181,slave1:2181,slave2:2181</value>
      </property>
      
    2. 修改hdfs-site.xml

      <!--配置namenode节点,主备-->
      <property><name>dfs.nameservices</name><value></value>
      </property>
      <property><!--EXAMPLENAMESERVICE为${dfs.nameservices}属性值,此项配置为指定主节点与主备节点--><name>dfs.ha.namenodes.EXAMPLENAMESERVICE</name><value></value><description>The prefix for a given nameservice, contains a comma-separated list of namenodes for a given nameservice (eg EXAMPLENAMESERVICE).</description>
      </property>
      <property><!--当集群为HA或者联邦集群时,我们必须指定多个主节点--><name>dfs.namenode.rpc-address</name><value></value><description>RPC address that handles all clients requests. In the case of HA/Federation where multiple namenodes exist, the name service id is added to the name e.g. dfs.namenode.rpc-address.ns1 dfs.namenode.rpc-address.EXAMPLENAMESERVICE The value of this property will take the form of nn-host1:rpc-port.</description>
      </property>
      <!--设置共享日志-->
      <property><!-- namenode间用于共享编辑 日志的journal节点列表 --><name>dfs.namenode.shared.edits.dir</name><value>qjournal://master:8485;slave1:8485;slave2:8485/ns1</value>
      </property>
      <property><!-- journalnode 上用于存放edits日志 的目录 --><name>dfs.journalnode.edits.dir</name><value>/home/hadoop/phoenix/hadoop/tmp/data/dfs/jn</value>
      </property>
      <!--开启故障转移-->
      <property><!-- 是否开启自动故障转移。建议开启,true --><name>dfs.ha.automatic-failover.enabled</name><value>true</value>
      </property>
      <!--防止脑裂-->
      <property><!-- HDFS的HA 功能的防脑裂方法。可以是内建的方法(例如shell和sshfence)或者用户定义的方法。 建议使用sshfence(hadoop:9922),括号内的是用户名和 端口,注意,这需要NN的2台机器之间能够免密码登陆 fences是防止脑裂的方法,保证NN中仅一个是Active的,如果2者都是Active的,新的会 把旧的强制Kill。 --><name>dfs.ha.fencing.methods</name><value>sshfence</value>
      </property>
      <property><!-- 密钥认证文件--><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/phoenix/.ssh/id_rsa</value>
      </property>
      
  4. 开启zkServer

    zkServer.sh start
    
  5. 开启journalNode

    hadoop-daemon.sh start journalNode
    
  6. 格式化集群(只有当第一次格式化时采用):

    hdfs namenode -format
    
  7. 将第一个结点的与第二个节点同步,有两种实现方法(建议使用第二种):

    1. 在第二个节点使用 hdfs namenode -bootstrapStandby
    2. 将第一个节点的namenode的文件远程拷贝到第二个节点的多对应位置
  8. 在namenode节点上格式化zkfc

    hdfs zkfc -foormatZK
    
  9. 启动集群

    # 启动hdfs
    start-dfs.sh
    # 启动yarn
    start-yarn.sh
    # hdfs和yarn 一起启动(不建议使用)
    start-all.sh
    

HBASE

  1. 解压缩hbase的压缩包,并配置相关环境变量

  2. 修改hbase-env.sh,增加java_home

  3. 修改 regionservers文件,添加regionserver的节点

  4. 配置备份主机:在conf文件中创建一个名为backup-master的文件,

  5. 修改 hbase-site.xml 文件

    <property><name>hbase.cluster.distributed</name><value>true</value>
    </property>
    <property><name>hbase.rootdir</name><value>hdfs://ns1/hbase</value>
    </property>
    <property><name>hbase.zookeeper.quorum</name><value>master,slave1,slave2,slave3,slave4</value>
    </property>
    <property><name>hbase.zookeeper.property.dataDir</name><value>/home/phoenix/apps/zookeeper/tmp</value>
    </property>
    
  6. 将Hadoop的配置信息与hbase连接

    1. 将Hadoop_conf_dir添加到hbase的classpath环境变量中 hbase-env.sh
    2. 在conf下创建软连接,指向那些配置文件
    3. 如只要用到小部分的Hadoop的配置信息时,可直接将那些信息写入到hbase-site.xml文件中
  7. 开启hbase

    1. 首先开启zkServer
    2. 开启dfs
    3. 开启yarn
    4. 开启hbase

HIVE

  1. 解压hive的压缩包,并配置相关的环境变量

  2. 上传mysql的连接jar包至hive的lib目录中

  3. 安装mysql

  4. 修改配置文件

    1. 修改hive-env.sh

      export HADOOP_HOME = /home/phoenix/apps/hadoop
      export HIVE_CONF_DIR = /home/phoenix/apps/hive/conf
      export HIVE_AUX_JARS_PATH = /home/phoenix/apps/hive/lib
      
    2. 修改hive-site.xml

      <!--主要将其默认数据库改为mysql-->
      <property><name>javax.jdo.option.Multithreaded</name><value>true</value><description>Set this to true if multiple threads access metastore through JDO concurrently.</description>
      </property>
      <property><name>javax.jdo.option.ConnectionURL</name><!--<value>jdbc:derby:;databaseName=metastore_db;create=true</value>--><value>JDBC:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true</value><description>JDBC connect string for a JDBC metastore.To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.</description>
      </property>
      <property><name>javax.jdo.option.ConnectionDriverName</name><!--<value>org.apache.derby.jdbc.EmbeddedDriver</value>--><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description>
      </property>
      <property><name>javax.jdo.option.ConnectionUserName</name><!--<value>APP</value>--><value>hive</value><description>Username to use against metastore database</description>
      </property>
      <property><name>javax.jdo.option.ConnectionPassword</name><!--<value>mine</value>--><value>hivepwd</value><description>password to use against metastore database</description>
      </property>
      
    3. 修改core-site.xml

      <property><!--任意节点使用 hadoop 集群的代理用户 hadoop 都能访问 hdfs 集群--><name>hadoop.proxyuser.hadoop.hosts</name><value>*</value>
      </property>
      <property><name>hadoop.proxyuser.hadoop.groups</name><value>*</value>
      </property>
      
    4. 修改hdfs-site.xml

      <property><name>dfs.webhdfs.enabled</name><value>true</value>
      </property>
      

FLUME

暂放

KAFKA

暂放

SPARK

  1. 上传并解压Spark的二进制压缩包。
  2. 配置Spark的环境变量
  3. 修改$SPARK_HOME/conf/slaves文件,添加spark集群模式中的从节点的IP或者是主机名(需修改映射信息)
  4. 拷贝或者创建core-site.xml、hdfs-site.xml文件或者软链接至$SPARK_HOME/conf/下
  5. 修改$SPARK_HOME/conf/spark_env.sh,添加java、hadoop、scala等环境

Kylin

  1. 下载上传Kylin压缩包

  2. 解压

  3. 检查环境变量(Hadoop、Hive、HBase)

  4. 配置环境变量

  5. 修改时区conf/kelin.properties

    kylin.web.timezone=GTM+8
    

Kafka-eagel

Kafka的可视化工具

  1. 下载上传Kafka-eagle压缩包

  2. 解压压缩包(该压缩包中含有一个压缩包,也得压缩,建议将里面的那个压缩包拿出)

  3. 配置环境变量

    KE_HOME=....
    PATH=$PATH:$KE_HOME/bin
    
  4. 修改配置文件system-config.properties

    kafka.eagle.zk.cluster.alias=cluster1,cluster2
    cluster1.zk.list=tdn1:2181,tdn2:2181,tdn3:2181
    # 修改offset存储位置kafka1.5之前默认在zk中,之后在kafka的offset主题中
    cluster1.kafka.eagle.offset.storage=kafka
    cluster2.kafka.eagle.offset.storage=zk
    # 修改db
    kafka.eagle.driver=org.sqlite.JDBC
    kafka.eagle.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
    kafka.eagle.username=root
    kafka.eagle.password=smartloli
    

问题排查

  1. ERROR namenode.NameNode: Failed to start namenode.
    java.lang.IllegalArgumentException: Does not contain a valid host:port authority: master

    1. dfs.namenode.rpc-address属性配置问题
  2. 格式化没有问题,开启集群的时候连接不上其他节点(连接超时)

    1. 防火墙未关闭,或关闭后未重启配置
    2. 配置错误
  3. 当启动zkServer时,显示连接8485端口错误

    1. journalnode的数据文件位置权限不足

Apache Hadoop大数据集群及相关生态组件安装相关推荐

  1. 全网最详细的Hadoop大数据集群搭建并进行项目分析(基于完全分布式)---第二部分

    ##所有需要的资料全部已上传到百度网盘上,请自行下载## 获取镜像,https://pan.baidu.com/s/1ho4hMrvIu1V6W4wWdH8nIA,提取码:ygyg 获取Xshell, ...

  2. 全网最详细的Hadoop大数据集群搭建并进行项目分析(基于完全分布式)---终结篇

    ##所有需要的资料全部已上传到百度网盘上,请自行下载## 获取镜像,https://pan.baidu.com/s/1ho4hMrvIu1V6W4wWdH8nIA,提取码:ygyg 获取Xshell, ...

  3. 全网最详细的Hadoop大数据集群搭建并进行项目分析(基于完全分布式)-----第一部分

    ##心路历程:这是大学时期做的项目,这个项目对我印象特别的深,当时没有记录在博客上,今后会积极分享自己做项目的历程与经验,希望能帮到需要的朋友,有什么问题或者建议欢迎在评论区留言,废话不多说,咱们就开 ...

  4. 全网最详细的大数据集群环境下如何正确安装并配置多个不同版本的Cloudera Hue(图文详解)...

    不多说,直接上干货! 为什么要写这么一篇博文呢? 是因为啊,对于Hue不同版本之间,其实,差异还是相对来说有点大的,具体,大家在使用的时候亲身体会就知道了,比如一些提示和界面. 全网最详细的大数据集群 ...

  5. 从零开始的Hadoop大数据集群(伪)搭建,全免费VirtualBox虚拟机Ubuntu版,学习向,超详细---(一)

    在公司工作了一段时间了,大数据平台都是公司的运维人员搭建维护的,自己也想亲自搭建一套,纯粹为了学习和提高自己,也为了以后自己研究用.公司的环境不太适合乱来,自己的就可以随意玩了. 写这个也是为了记录自 ...

  6. hadoop大数据集群完全分布式部署实操篇:HDFS2.9.2、HBASE2.2.6、YARN2.9.2、SPARK2.4.7,ZOOKEEPER3.6.2

    推荐以rpm方式安装jdk,有些软件比如cm只认/usr/java/default目录 配置/etc/hosts文件 配置ssh免密登录 配置时间同步 HDFS安装 单机伪分布式安装 ssh远程登录找 ...

  7. 大数据集群搭建之Linux的安装(一)

    1.准备工具 VMWare.centos mimal版本系统文件. 2.工具安装 1.安装vmware软件 安装软件地址: VMWare:http://pan.baidu.com/s/1qYnySrE ...

  8. 小知识点:ARM 架构 Linux 大数据集群基础环境搭建(Hadoop、MySQL、Hive、Spark、Flink、ZK、Kafka、Nginx、Node)

      换了 M2 芯片的 Mac,以前 x86 版本的 Linux 大数据集群基础环境搭建在 ARM 架构的虚拟机集群上有些用不了了,现在重新写一份基于 ARM 架构的,少数不兼容之外其他都差不多,相当 ...

  9. 大数据集群搭建全部过程(Vmware虚拟机、hadoop、zookeeper、hive、flume、hbase、spark、yarn)

    大数据集群搭建进度及问题总结 所有资料在评论区那里可以得到 第一章: 1.网关配置(参照文档) 注意事项:第一台虚拟机改了,改为centos 101 ,地址为192.168.181.130 网关依然是 ...

最新文章

  1. Javascript原型链
  2. CoordinatorLayout 之深入理解
  3. as3中使用字符串调用函数。
  4. 自制H3C交换机CONSOLE线
  5. XStream的使用
  6. Android Stuido 快速设置成eclipse的快捷键习惯
  7. html5中box-shadow,CSS阴影效果(Box-shadow)用法趣味讲解
  8. python tkinter 窗口最大化
  9. 其实我们可以做自己的心理医生
  10. 基于android的短信收发,android 短信接收短信 与发送短信源码
  11. mysql创建序列发生器_字符控制发生器可以干啥
  12. 计算机协会游园活动方案,大学计算机协会演讲比赛活动策划方案
  13. 手机QQ 聊天数据库查看
  14. 【b站求职笔记】行路院-王贺 2020年12月笔记
  15. JAVA计算机毕业设计二手手机回收平台系统Mybatis+源码+数据库+lw文档+系统+调试部署
  16. 从《亮剑》看先进的管理(原创)
  17. Xshell的快捷键(非常实用)
  18. android开发论坛!原生Android开发的路该怎么走?系列篇
  19. form-storage.js表单数据本地存储插件
  20. c#中的Length和GetLength()的区别

热门文章

  1. 【DG】基于同一个主机建立物理备库和逻辑备库 (三)
  2. 怎么把ppt弄成链接的形式_如何将ppt转换成html网页格式
  3. 关于SASE与安全市场的那些事
  4. 转盘抽奖图片html,html转盘抽奖
  5. python fabs和abs_python – abs()vs fabs()速度差异和fabs()
  6. mysql 1786_【MySQL案例】ERROR 1786 (HY000)
  7. HTML5 音频文件
  8. Docker之通过阿里云的镜像加速器快速拉取镜像到本地
  9. 计算机仿真塞曼效应实验报告,塞曼效应实验报告[完整版].doc
  10. 目标检测综述(二:古典方法对比现代方式以及目标检测算法相关概述)