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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM