• Hadoop、HBase、Spark单机安装


    水平有限,本文仅以流水账的方式 介绍自己 安装 三款软件 的过程。

    环境Ubuntu on 虚拟机:

    $ cat /proc/version
    Linux version 4.15.0-54-generic (buildd@lgw01-amd64-014) (gcc version 7.4.0 
    (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #58-Ubuntu SMP Mon Jun 24 10:55:24 UTC 2019

    背景

    Hadoop 包含 HDFS、MapReduce(两大核心),基于 Hadoop core 实现,对了Hadoop中还有一款 资源管理器YARN。

    HBase 一个分布式数据库,列存储模式,HBase将数据存储在HDFS(基于),分布式NoSQL数据库,类似MongoDB、Cassandra,不过,可以处理的数据量级大于MongoDB。

    Spark 是一个计算框架,为了解决Hadoop的计算效率低下等问题而生,它基于内存做计算,可以基于Hadoop,也可以不和Hadoop一起使用。

    三款软件都属于 Apache基金会,从下面的链接中可以找到 各个软件(Download & Documentation):

    https://www.apache.org/index.html#projects-list

    安装选择的版本:

    Hadoop:hadoop-3.1.3.tar.gz 2019 Oct 21

    HBase:hbase-2.2.5-bin.tar.gz 2020/05/21

    Spark:spark-3.0.0-bin-hadoop3.2.tgz Jun 18, 2020

    注意,

    HBase 1.*、2.* 的区别是什么?其 1.6.0 发布于 2020/03/06,看来两个版本都是处于 很好的维护阶段。

    spark with hadoop、without hadoop的区别是什么?

    作者还没弄明白。

    正文

    0、准备工作

    创建 hadoop用户(不一定是 hadoop),并添加 管理员权限

    JDK 8+(Linux上有 OpenJDK 的)

    ssh、sshd、pdsh

    修改 /etc/profile:添加 export PDSH_RCMD_TYPE=ssh

    1、Hadoop

    三种安装模式中的 Pseudo-Distributed Mode(伪分布式) 模式 + YARN资源调度器。

    解压hadoop-3.1.3.tar.gz;

    修改 etc/hadoop/hadoop-env.sh:

    添加export JAVA_HOME=jdk安装目录;

    执行 bin/hadoop 可以看到 这个命令的用户;

    bin目录 下是 一些 原始命令,sbin目录 下 是 一些服务命令——启动、停止等。

    此时,hadoop命令就可以使用了,如官网所说,可以执行一些任务了。

    etc下文件:

    $ ll etc/hadoop/
    total 184
    drwxr-xr-x 3 hadoop hadoop  4096 7月   9 08:46 ./
    drwxr-xr-x 3 hadoop hadoop  4096 9月  12  2019 ../
    -rw-r--r-- 1 hadoop hadoop  8260 9月  12  2019 capacity-scheduler.xml
    -rw-r--r-- 1 hadoop hadoop  1335 9月  12  2019 configuration.xsl
    -rw-r--r-- 1 hadoop hadoop  1940 9月  12  2019 container-executor.cfg
    -rw-r--r-- 1 hadoop hadoop   866 6月  29 15:50 core-site.xml
    -rw-r--r-- 1 hadoop hadoop  3999 9月  12  2019 hadoop-env.cmd
    -rw-r--r-- 1 hadoop hadoop 15934 6月  29 14:48 hadoop-env.sh
    -rw-r--r-- 1 hadoop hadoop  3323 9月  12  2019 hadoop-metrics2.properties
    -rw-r--r-- 1 hadoop hadoop 11392 9月  12  2019 hadoop-policy.xml
    -rw-r--r-- 1 hadoop hadoop  3414 9月  12  2019 hadoop-user-functions.sh.example
    -rw-r--r-- 1 hadoop hadoop  1072 6月  30 15:03 hdfs-site.xml
    -rw-r--r-- 1 hadoop hadoop  1484 9月  12  2019 httpfs-env.sh
    -rw-r--r-- 1 hadoop hadoop  1657 9月  12  2019 httpfs-log4j.properties
    -rw-r--r-- 1 hadoop hadoop    21 9月  12  2019 httpfs-signature.secret
    -rw-r--r-- 1 hadoop hadoop   620 9月  12  2019 httpfs-site.xml
    -rw-r--r-- 1 hadoop hadoop  3518 9月  12  2019 kms-acls.xml
    -rw-r--r-- 1 hadoop hadoop  1351 9月  12  2019 kms-env.sh
    -rw-r--r-- 1 hadoop hadoop  1747 9月  12  2019 kms-log4j.properties
    -rw-r--r-- 1 hadoop hadoop   682 9月  12  2019 kms-site.xml
    -rw-r--r-- 1 hadoop hadoop 13326 9月  12  2019 log4j.properties
    -rw-r--r-- 1 hadoop hadoop   951 9月  12  2019 mapred-env.cmd
    -rw-r--r-- 1 hadoop hadoop  1764 9月  12  2019 mapred-env.sh
    -rw-r--r-- 1 hadoop hadoop  4113 9月  12  2019 mapred-queues.xml.template
    -rw-r--r-- 1 hadoop hadoop  1027 6月  29 16:49 mapred-site.xml
    drwxr-xr-x 2 hadoop hadoop  4096 9月  12  2019 shellprofile.d/
    -rw-r--r-- 1 hadoop hadoop  2316 9月  12  2019 ssl-client.xml.example
    -rw-r--r-- 1 hadoop hadoop  2697 9月  12  2019 ssl-server.xml.example
    -rw-r--r-- 1 hadoop hadoop  2642 9月  12  2019 user_ec_policies.xml.template
    -rw-r--r-- 1 hadoop hadoop    10 9月  12  2019 workers
    -rw-r--r-- 1 hadoop hadoop  2250 9月  12  2019 yarn-env.cmd
    -rw-r--r-- 1 hadoop hadoop  6056 9月  12  2019 yarn-env.sh
    -rw-r--r-- 1 hadoop hadoop  2591 9月  12  2019 yarnservice-log4j.properties
    -rw-r--r-- 1 hadoop hadoop  1159 6月  29 17:41 yarn-site.xml
    hadoop@ben-VirtualBox:~/ws/hadoop-3.1.3$
    etc/hadoop目录

    参考官网,进一步安装 Pseudo-Distributed Mode 的 hadoop。

    修改 etc/hadoop/core-site.xml

    修改 etc/hadoop/hdfs-site.xml:比官网多了 namenode、datanode 的配置,,默认是在 /tmp目录下,重启后 数据丢失,下次由需要重新 格式化,,整个HDFS中,只会有一个 namenode,但是,<value>属性 可以配置 多个值(看到过一篇博文,首个目录后的为 备用)。

    配置无密码登录(ssh localhost):在用户的 HOME目录 下执行,执行后会有 .ssh文件夹

    ssh-keygen

    上面的配置后,HDFS可用了,也可以执行 hadoop任务(描述准确吗?)。

    使用前,需要执行HDFS格式化:

    $ bin/hdfs namenode -format

    启动HDFS:

    $ sbin/start-dfs.sh

    此时,使用 jps命令 可以看到 namenode、datanode、SecondaryNameNode等Java进程:

    使用 http://localhost:9870/ 可以看到 一些hadoop的信息。

     

    如 官网所讲,此时,可以使用 bin/hdfs 命令 操作HDFS了,建立文件夹、操作文件等。

    HDFS 就是一个 以 根目录(/)  为节点的 分布式文件系统,目录结构类似 Linux系统,但是,默认的 根目录下 没有内容。

    接下来,配置YARN资源调度器。

    修改etc/hadoop/mapred-site.xml:

    <configuration>
            <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
            </property>
            <property>
                    <name>mapreduce.application.classpath</name>
                    <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
            </property>
    </configuration>

    修改etc/hadoop/yarn-site.xml:

    <configuration>
    
    <!-- Site specific YARN configuration properties -->
    
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</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.nodemanager.vmem-check-enabled</name>
                <value>false</value>
        </property>
    </configuration>

    注意,

    配置 yarn.nodemanager.vmem-check-enabled 是为了 避免 任务需要的内存超过虚拟内存大小 时,任务自动失败 的问题。

    使用下面的命令 即可 启动yarn资源调度器:

    $ sbin/start-yarn.sh

    启动成功,使用 jps命令 可以看到其进程:NodeManager、ResourceManager:

    ~/ws/hadoop-3.1.3$ sbin/start-yarn.sh
    Starting resourcemanager
    Starting nodemanagers
    hadoop@ben-VirtualBox:~/ws/hadoop-3.1.3$ jps
    4193 SecondaryNameNode
    3942 DataNode
    5320 NodeManager
    5130 ResourceManager
    3772 NameNode
    5647 Jps
    ~/ws/hadoop-3.1.3$

    访问下面的链接 可以看到 资源管理器:

    和前一步 没有启动yarn一样 执行hadoop任务,可以在这个页面 看到 任务执行详情。

    2、HBase

    参考链接:

    http://hbase.apache.org/book.html#quickstart

    https://foochane.cn/article/2019062801.html

    下载2.2.5:hbase-2.2.5-bin.tar.gz;

    解压:tar xzvf hbase-2.2.5-bin.tar.gz;

    修改 hbase-env.sh:export JAVA_HOME、export HBASE_MANAGES_ZK=false;

    修改 hbase-site.xml :hbase.rootdir、hbase.zookeeper.quorum——端口为2182;

    单机 伪分布式部署,故,无需更改 regionservers 文件:默认为 localhost;

    配置修改环境。

    确保 hdfs、ZooKeeper 已启动,然后,启动 hbase:bin/start-hbase.sh

    HMaster启动了,成功!

    此时,可以访问 localhost:16010 (旧版本的端口 不是 16010)

    bin目录下文件:

    重点:

    hbase启动后,可以通过 HBase shell 操作它。

    list、help……需要摸索,和操作一般数据库差不多。

    HBase 启动后,在 HDFS 下会建立一个 /hbase目录:

    至此,HBase 单机伪分布式 安装完毕。

    3、Spark

    提前安装Scala:

    下载scala-2.13.3.tgz,解压,修改 ~/.bashrc文件(修改后执行 source);

    命令行输入 scala,进入交互式命令行:

    开始Spark安装:

     下载 spark-3.0.0-bin-hadoop3.2.tgz , 解压;

     

    修改spark-env.sh;

    单机,无需更改 slaves;

    修改 ~/.bashrc文件:

    启动Hadoop后,启动Spark:

    $SPARK_HOME/sbin/start-all.sh

    注意,

    start-all.sh 中会启动 start-master.sh ,其中会配置 Master的 端口为 8080,会存在 冲突,修改后才可以启动成功。

    访问 localhost:8081 可得:

    说明,start-history-server.sh 的作用 未测试,不启动也是可以的。

    bin目录 下的文件列表:

    执行 spark-shell 启动 交互式接口;

    启动成功,则可以使用 4040端口访问:

    Spark启动了,接下来,怎么使用Spark呢?

     统计HDFS中一个文件的行数:

     4040端口 所在的页面 可以看到 任务 更详细的信息:

    就这样,

    安装好了,接下来 可以 一边学习 一边实践了(Learning by Doing) ......

    参考资料:

    1、Hadoop: Setting up a Single Node Cluster.

    https://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-common/SingleCluster.html

    2、网友 foochane 的 大数据 分类

    https://foochane.cn/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/page/2/

    hadoop https://foochane.cn/article/2019051901.html

    hbase https://foochane.cn/article/2019062801.html

    spark https://foochane.cn/article/2019051904.html

    网友 foochane 的 简书 (备用地址):

    https://www.jianshu.com/u/f38fdcc058f9

    后记

    作者尽量保证文章的准确性,如有谬误,还请指正(不强求)。

    yarn.nodemanager.vmem-check-enabled

  • 相关阅读:
    腾讯大数据开发实习面经
    网易游戏2021暑期实习生 游戏运营管理面经 已拿offer
    猿辅导大数据校招1面+2面面经
    虎牙直播内容运营(英雄联盟)三轮超高质量面经分享
    字节跳动日常实习广告大数据研发实习面经(初面)
    运营小白超详细三轮面试拿到字节跳动offer
    字节跳动前端日常实习三轮技术面经
    360大数据开发实习面经
    美团大数据开发工程师校招面经
    高级运维工程师的打怪升级之路
  • 原文地址:https://www.cnblogs.com/luo630/p/13271637.html
Copyright © 2020-2023  润新知