ビッグデータ技術のHadoop(入門)

第 1 章 Hadoop の概要

1.1 Hadoop とは

1) Hadoop は、 Apache Foundation によって開発された分散システム インフラストラクチャです。

2) 主に大量のデータストレージと大量のデータの分析と計算の問題を解決します

3) 広い意味で、Hadoop は通常、Hadoop エコシステムというより広い概念を指します。

1.2 3 つの Hadoop リリース (理解)

3 つの Hadoop ディストリビューション: Apache、Cloudera、Hortonworks。

  • Apache バージョンの最も原始的な (最も基本的な) バージョンであり、開始するのに最適です。2006年

  • Cloudera は、製品 CDH に対応する多くのビッグ データ フレームワークを統合します。2008年

  • Hortonworks のドキュメントは、製品の HDP に対応してより優れています。2011 年、Hortonworks は Cloudera に買収され、新しいブランド CDP を立ち上げました。

1)Apache Hadoop

公式ウェブサイトアドレス: http://hadoop.apache.org

ダウンロードアドレス: https: //hadoop.apache.org/releases.html

2)Cloudera Hadoop

公式サイトアドレス: https: //www.cloudera.com/downloads/cdh

ダウンロードアドレス: https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_6_download.html

(1) 2008 年に設立された Cloudera は、Hadoop を商用化した最初の企業であり、主にサポート、コンサルティング サービス、およびトレーニングを含む Hadoop 商用ソリューションをパートナーに提供しています。

(2) 2009 年には、Hadoop の創設者である Doug Cutting も Cloudera に参加しました。Cloudera製品は主にCDH、Cloudera Manager、Cloudera Support

(3) CDH は Cloudera の Hadoop ディストリビューションであり、完全にオープン ソースであり、Apache Hadoop と比較して互換性、セキュリティ、および安定性が強化されています。Cloudera の定価は、ノードあたり年間 10,000 ドルです。

(4) Cloudera Manager は、クラスター用のソフトウェア配布、管理、および監視プラットフォームであり、Hadoop クラスターを数時間以内に展開し、クラスターのノードとサービスをリアルタイムで監視できます。

3)Hortonworks Hadoop

公式サイトアドレス: https: //hortonworks.com/products/data-center/hdp/

ダウンロードリンク: https://hortonworks.com/downloads/#data-platform

(1) 2011 年に設立された Hortonworks は、Yahoo とシリコン バレーのベンチャー キャピタル企業である Benchmark Capital との合弁会社です。

(2) 設立当初、Hadoop を専門とする 25 人から 30 人の Yahoo エンジニアを吸収し、これらのエンジニア全員が 2005 年に Yahoo の Hadoop 開発を支援し、Hadoop のコードの 80% を提供しました。

(3) Hortonworks の主力製品である Hortonworks Data Platform (HDP) も 100% オープン ソース製品であり、共通プロジェクトに加えて、HDP にはオープン ソースのインストールおよび管理システムである Ambari も含まれています。

(4) Hortonworks は 2018 年に Cloudera に買収されました。

1.3 Hadoop の利点 (4 高)

  1. 高い信頼性: Hadoop は最下層で複数のデータ コピーを保持するため、Hadoop コンピューティング エレメントまたはストレージに障害が発生しても、データが失われることはありません。

  1. 高いスケーラビリティ: クラスター間でタスク データを分散すると、数千のノードを簡単に拡張できます。

  1. 効率性: MapReduce の考え方の下で、Hadoop は並列に動作してタスク処理を高速化します。

  1. 高い耐障害性: 失敗したタスクを自動的に再割り当てできます。

1.4 Hadoop コンポジション (インタビュー中心)

Hadoop1.X、2.X、および 3.X の相違点:

  • Hadoop 1.x の時代では、Hadoop の MapReduce はビジネス ロジックの操作とリソースのスケジューリングを同時に処理し、高度に結合されていました。

  • Hadoop 2.x の時代に、Yarn が追加されました。Yarn はリソースのスケジューリングのみを担当し、MapReduce はコンピューティングのみを担当します。

  • Hadoop 3.x では、構成に変更はありません。

1.4.1 HDFS アーキテクチャの概要

Hadoop Distributed File System (略して HDFS) は、分散ファイル システムです。

1.4.2 YARN アーキテクチャの概要

Yet Another Resource Negotiator、略して YARN、別のリソース コーディネーターは、Hadoop のリソース マネージャーです。

1.4.3 MapReduce アーキテクチャの概要

MapReduce は、コンピューティング プロセスを Map と Reduce の 2 つのフェーズに分割します。

(1) Map ステージは、入力データを並列処理します。

(2) Reduce ステージは、Map の結果を要約します。

1.4.4 HDFS、YARN、MapReduce の関係

1.5 ビッグデータ技術エコシステム

図に含まれる技術用語は、次のように説明されています。

(1) Sqoop: Sqoop は、主に Hadoop、Hive、および従来のデータベース (MySQL) 間のデータ転送に使用されるオープン ソース ツールであり、リレーショナル データベース (MySQL、Oracle など) 内のデータを転送できます。Hadoop の HDFS にインポートされます。 、HDFS データをリレーショナル データベースにインポートすることもできます。

(2) Flume: Flume は、可用性と信頼性に優れた分散型の大規模なログ収集、集約、および送信システムです. Flume は、データ収集のためにログ システム内のさまざまなデータ送信者のカスタマイズをサポートします。

(3) Kafka: Kafka は、高スループットの分散パブリッシュ/サブスクライブ メッセージング システムです。

(4) Spark: Spark は現在、最も人気のあるオープン ソースのビッグ データ メモリ コンピューティング フレームワークです。Hadoop上に蓄積されたビッグデータをもとに算出できます。

(5) Flink: Flink は現在、最も人気のあるオープン ソースのビッグ データ メモリ コンピューティング フレームワークです。リアルタイム コンピューティングには多くのシナリオがあります。

(6) Oozie: Oozie は、Hadoop のジョブ (ジョブ) を管理するワークフロー スケジューリング管理システムです。

(7)HBase:HBase是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。

(8)Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

(9)ZooKeeper:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。


第2章 Hadoop运行模式

1)Hadoop官方网站:http://hadoop.apache.org/

2)Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。

  • 本地模式:单机运行,只是用来演示一下官方案例。生产环境不用。

  • 伪分布式模式:也是单机运行,但是具备Hadoop集群的所有功能,一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试,生产环境不用。

  • 完全分布式模式:多台服务器组成分布式环境。生产环境使用。

2.1 本地运行模式(官方案例---WordCount)

1)创建在hadoop-3.1.3文件下面创建一个wcinput文件夹

[atguigu@hadoop102 hadoop-3.1.3]$ mkdir wcinput

2)在wcinput文件下创建一个word.txt文件

[atguigu@hadoop102 hadoop-3.1.3]$ cd wcinput

3)编辑word.txt文件

[atguigu@hadoop102 wcinput]$ vim word.txt

在文件中输入如下内容
hadoop yarn
hadoop mapreduce
atguigu
atguigu
保存退出::wq

4)回到Hadoop目录

[atguigu@hadoop102 hadoop-3.1.3]$ /opt/module/hadoop-3.1.3

5)执行程序

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput

6)查看结果

[atguigu@hadoop102 hadoop-3.1.3]$ cat wcoutput/part-r-00000

看到如下结果:
atguigu 2
hadoop  2
mapreduce       1
yarn    1

2.2 完全分布式运行模式(开发重点)

2.2.1 虚拟机准备

(1)准备3台客户机(关闭防火墙、静态IP、主机名称)

(2)安装JDK

(3)配置环境变量

(4)安装Hadoop

(5)配置环境变量

(6)配置集群

(7)单点启动

(8)配置ssh

(9)群起并测试集群

2.2.2 编写集群分发脚本xsync

1)scp(secure copy)安全拷贝

(1)scp定义

scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)

(2)基本语法

scp -r $pdir/$fname $user@$host:$pdir/$fname

命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

(3)案例实操

前提:在hadoop102、hadoop103、hadoop104都已经创建好的/opt/module、 /opt/software两个目录,并且已经把这两个目录修改为atguigu:atguigu

①在hadoop102上,将hadoop102中/opt/module/jdk1.8.0_212目录拷贝到hadoop103上。

[atguigu@hadoop102 ~]$ scp -r /opt/module/jdk1.8.0_212  atguigu@hadoop103:/opt/module

②在hadoop103上,将hadoop102中/opt/module/hadoop-3.1.3目录拷贝到hadoop103上。

[atguigu@hadoop103 ~]$ scp -r atguigu@hadoop102:/opt/module/hadoop-3.1.3 /opt/module/

③在hadoop103上操作,将hadoop102中/opt/module目录下所有目录拷贝到hadoop104上。

[atguigu@hadoop103 opt]$ scp -r atguigu@hadoop102:/opt/module/* atguigu@hadoop104:/opt/module

2)rsync远程同步工具

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

(1)基本语法

rsync -av $pdir/$fname $user@$host:$pdir/$fname

命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

(2)选项参数说明

选项---->功能

-a ----> 归档拷贝

-v ---->显示复制过程

(2)案例实操

①删除hadoop103中/opt/module/hadoop-3.1.3/wcinput

[atguigu@hadoop103 hadoop-3.1.3]$ rm -rf wcinput/

②同步hadoop102中的/opt/module/hadoop-3.1.3到hadoop103

[atguigu@hadoop102 module]$ rsync -av hadoop-3.1.3/ atguigu@hadoop103:/opt/module/hadoop-3.1.3/

3) xsync集群分发脚本

1)需求:循环复制文件到所有节点的相同目录下

(2)需求分析:

①rsync命令原始拷贝:

rsync -av /opt/module atguigu@hadoop103:/opt/

②期望脚本:

xsync要同步的文件名称

③期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

[atguigu@hadoop102 ~]$ echo $PATH

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atguigu/.local/bin:/home/atguigu/bin:/opt/module/jdk1.8.0_212/bin

(3)脚本实现

①在/home/atguigu/bin目录下创建xsync文件

[atguigu@hadoop102 opt]$ cd /home/atguigu
[atguigu@hadoop102 ~]$ mkdir bin
[atguigu@hadoop102 ~]$ cd bin
[atguigu@hadoop102 bin]$ vim xsync

在该文件中编写如下代码:

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo "Not Enough Arguement!"
    exit
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
    echo ====================  $host  ====================
    #3. 遍历所有目录,挨个发送
    for file in $@
    do
        #4. 判断文件是否存在
        if [ -e $file ]
            then
                #5. 获取父目录
                pdir=$(cd -P $(dirname $file); pwd)
                #6. 获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done

②修改脚本 xsync 具有执行权限

[atguigu@hadoop102 bin]$ chmod +x xsync

③测试脚本

[atguigu@hadoop102 ~]$ xsync /home/atguigu/bin

④将脚本复制到/bin中,以便全局调用

[atguigu@hadoop102 bin]$ sudo cp xsync /bin/

⑤同步环境变量配置(root所有者)

[atguigu@hadoop102 ~]$ sudo xsync /etc/profile.d/my_env.sh
让环境变量生效
[atguigu@hadoop103 bin]$ source /etc/profile
[atguigu@hadoop104 opt]$ source /etc/profile

2.2.3 SSH无密登录配置

1)配置ssh

(1)基本语法

ssh另一台电脑的IP地址

[atguigu@hadoop102 ~]$ ssh hadoop103
(2)退回到hadoop102
[atguigu@hadoop103 ~]$ exit

2)无密钥配置

(1)免密登录原理
(2)生成公钥和私钥
[atguigu@hadoop102 .ssh]$ pwd
/home/atguigu/.ssh

[atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(3)将公钥拷贝到要免密登录的目标机器上
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104

# 还需要在hadoop103上采用root账号配置一下无密登录到hadoop102、hadoop103、hadoop104服务器上。
[atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop102
[atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop103
[atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop104

[atguigu@hadoop104 .ssh]$ ssh-copy-id hadoop102
[atguigu@hadoop104 .ssh]$ ssh-copy-id hadoop103
[atguigu@hadoop104 .ssh]$ ssh-copy-id hadoop104

3).ssh文件夹下(~/.ssh)的文件功能解释

known_hosts

记录ssh访问过计算机的公钥(public key)

id_rsa

生成的私钥

id_rsa.pub

生成的公钥

authorized_keys

存放授权过的无密登录服务器公钥

2.2.4 集群配置

https://blog.csdn.net/m0_57126939/article/details/129170103

おすすめ

転載: blog.csdn.net/m0_57126939/article/details/129160877