Lin Ziyu のビッグデータ技術原則の概要

目次


※取材場所

ダウンロード

講義ノートPPT(最新版)、シラバス、ソフトウェア、データセットなど、教材をサポートする各種資料のダウンロード。

Lin Ziyu-ビッグデータ技術の原理と応用 (第 3 版)

学習パス

メインディレクトリ: Lin Ziyu: ビッグデータ学習ルート

  1. VirtualBoxを使用して Windows に Ubuntu 仮想マシンをインストールする√
  2. Hadoop3.1.3 インストールチュートリアル_単一マシン/擬似分散構成_Hadoop3.1.3/Ubuntu18.04(16.04)
  3. Hadoop クラスターのインストールと構成チュートリアル_Hadoop3.1.3_Ubuntu
  4. HDFS プログラミングの実践 (Hadoop3.1.3) )√
  5. HBase2.2.2 のインストールおよびプログラミング実践ガイド
  6. MapReduce プログラミング実習 (Hadoop3.1.3)
  7. Hive3.1.2 インストールガイド
  8. Spark のインストールとプログラミングの練習 (Spark2.4.0)
  9. Flink のインストールとプログラミングの練習 (Flink1.9.1)

ビッグデータコラム

csdn: ビッグ データのクイック スタート
github: BigData-Notes

ビッグデータの古典的な論文

論文のダウンロードリンク: リンク: https://pan.baidu.com/s/1sbZ6w9jf8ivYFP8CWZgO4w
抽出コード: 682u

名前 給紙元 出版年
GFS Google ファイル システム 2003年
MapReduce MapReduce:大規模クラスタでのデータ処理の簡素化 2004年
ビッグテーブル Bigtable:構造化データのための分散ストレージ システムpdf 2006年
ぽっちゃり 疎結合分散システム用の Chubby ロック サービス 2006年
倹約 Thrift:スケーラブルな多言語サービスの実装 2009年
ハイブ Hive:Map-Reduce を超えた倉庫ソリューション 2009年
ドレメル Dremel:Web スケール データセットのインタラクティブ分析 2010年
スパーク Spark:ワーキングセットを使用したクラスターコンピューティング 2010年
メガストア Megastore:スケーラブルで高可用性を提供 2011年
スパナ Spanner: Google の世界的に分散されたデータベース 2012年
S4 S4:分散ストリームコンピューティングプラットフォーム 2010年
嵐@Twitter 2014年
カフカ Kafka:ログ処理用の分散メッセージング システム 2011年
GFS データフロー モデル: 大規模で制限のないアウトオブオーダー データ処理における正確性、レイテンシー、コストのバランスを取るための実践的なアプローチ 2015年
ラフト 理解可能なコンセンサスアルゴリズムを求めて 2014年
Borg を使用した Google での大規模クラスター管理 2015年
Kubernetes Borg、Omega、Kubernetes 2016年

画像の説明を追加してください

Java学習のまとめ

IDEA コーディング設定
github: Java 学習中のいくつかのコード

港湾労働者

新人チュートリアル: docker のインストールとdocker の原則と k8sの使用の違い

アリババクラウドECS

ECS の外部ネットワーク IP に ping できない

セキュリティグループを追加し、ネットワークフィールドを開きます。実際の操作については、 https://developer.aliyun.com/article/767653 ?spm=a2c6h.13813017.content3.6.143c6be7TYmHl5 を参照してください。

Centos7.4 パスワード不要ログイン

  1. 各ホストに SSH をダウンロードするsudo yum install openssh-server
  2. ファイアウォールをオフにするsystemctl disable firewalld.service
  3. 公開鍵キーを生成し、ssh-keygen
  4. 信頼できる接続のリストを作成します。cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
  5. パスワードなしでホストにログインし、ssh localhost終了します。exit

Python プログラムを実行するには、centos7 にpython3.8 hadoop をインストールします。

HadoopとPythonの関係

Python3 は Hadoop API を呼び出し
、pyhdfs を使用して HDFS に接続して操作します

1. 共通コマンド

ドッカーを再起動します

systemctl restart docker

ステータスを確認する

systemctl status docker

*エラーを報告

1. Docker「Docker デーモン ソケットに接続しようとしたときにアクセス許可が拒否されました」

2. Docker のインストールが完了した後、hello-world のテストで問題が発生します: ローカルでイメージ 'hello-world:latest' が見つかりません

クラウドサーバーucloud

1. エラー報告

1.1sudo apt-get update でソースを更新できない

Linux - Ubuntu下実行apt-get update报错:一部のインデックス ファイルのダウンロードに失敗しました。これらは無視されているか、代わりに古いものが使用されています。

2. sudo apt-get update プロンプト E: ウェアハウス「http://mirrors.aliyun.com/ubuntu eoan Release」にリリース ファイルがありません。解決

3. E: サブプロセス /usr/bin/dpkg がエラー コードを返しました (1) 解決方法

Ubuntu16.04 パスワードなしで SSH ログインを構成する

Ubuntu16.04 パスワードなしで SSH ログインを構成する

コミック: SnowFlake アルゴリズムとは何ですか?

Linuxのディレクトリ構造

bin はバイナリ実行可能ファイル (ls、cat、mkdir など) を格納
します boot システムの
起動に使用されるさまざまなファイルを格納します dev はデバイス ファイルなどを
格納します システム設定ファイルを格納しますホーム ルート ディレクトリ すべてのユーザー ファイルの lib
ストア
とファイル システムを格納します 共有ライブラリとカーネルmntでのプログラムの実行に必要なモジュール
システム管理者が一時ファイル システムをインストールするインストール ポイント
opt 追加インストール用のオプションのアプリケーション パッケージが配置される場所proc 現在のメモリルート
のマッピングを保存する仮想ファイル システム
スーパーユーザー ディレクトリ
sbin には、バイナリ実行可能ファイルが保存されます。root のみがアクセスできます。 tmp は、
さまざまな一時ファイルの保存に使用されます。
usr は、システム アプリケーションの保存に使用されます。より重要なディレクトリ /usr/local ローカル管理者ソフトウェアのインストール ディレクトリ
var は、必要なデータの保存に使用されます。運用ドキュメント中に変更される可能性がある

共通コマンド

1.vim

保存して WQ を終了します!
q!を保存せずに終了します。
任意の行に移動: 行番号

先頭から検索
コマンド モードで、検索したい文字 / を入力します
。 Enter を押すと、vim がカーソルを文字に移動し
、n (小文字) を押して次の一致を表示します。
N (大文字) を押して前の一致を表示します。 (Capslock は大文字と小文字を切り替えます。Shift+N を小文字で押すこともできます)

端から探す

? 検索する文字列または文字

検索後、他のファイルを開くと、それらも強調表示されていることがわかります。それらを閉じるにはどうすればよいですか?
コマンド ライン モードで、次の
ように入力します: nohlsearch または: set nohlsearch は、noh および set-noh と省略できます。

2.rm

rm [オプション] file
-f, --force 確認なしで強制的に削除します
-i ファイルを削除するかサブディレクトリを入力するたびに確認を求めます
-I 3 つ以上のファイルを削除する前、または再帰的に削除する前に確認を求めます
-r, -R 再帰的にサブディレクトリを削除
-d, --dir 空のディレクトリを削除
-v, --verbose 削除結果を表示

================================================= == ============================
一般的に次のように使用されます:
rm -d ディレクトリ名 # 空のディレクトリを削除します
rmdir ディレクトリ名 # 削除空のディレクトリ
rm -r ディレクトリ名 #delete 空ではないディレクトリ
rm ファイル名 #delete ファイル

ターミナルにそのフォルダーを入力して、次を実行します。
sudo rm -rf フォルダー名
それでも動作しない場合は、
sudo chmod 777 フォルダー名
sudo rm -rf フォルダー名を使用します。

ズーキーパーの設置例

1.1 インストール パッケージをパス /usr/local に解凍します。コマンドは次のとおりです。

evan@evan-virtual-machine:~/下载$ sudo tar -zxf apache-zookeeper-3.5.9.tar.gz -C /usr/local

1.2 使いやすいように、解凍されたファイル名を「apache-zookeeper-3.5.9」から「zookeeper」に変更します。

cd /usr/local
sudo mv ./apache-zookeeper-3.5.9 ./zookeeper

Zookeeper ディレクトリのアクセス許可を evan ユーザーに付与します。

cd /usr/local
sudo chown -R evan ./zookeeper

1.3 環境変数の構成
hbase の下にある bin ディレクトリをパスに追加します。これにより、hbase を起動するために /usr/local/zookeeper ディレクトリに移動する必要がなくなり、zookeeper の使用が大幅に容易になります。チュートリアルの次の部分でも、/usr/local/zookeeper ディレクトリ操作に切り替わります。これは、初心者が実行プロセスを理解するのに役立ち、熟練した後は切り替える必要はありません。

~/.bashrc ファイルを編集する

vim ~/.bashrc

PATH が導入されていない場合は、~/.bashrc ファイルの末尾に次の内容を追加してください。

export PATH=$PATH:/usr/local/zookeeper/bin

1.ハドゥープ

1.1 ローカルインストール

管理インターフェイス: http://evan-virtual-machine:8088/cluster/

NameNode インターフェイス:

http://evan-virtual-machine:50070(2.x)

http://evan-virtual-machine:9870(3.x)

HaDoop3.0 以前は、Web アクセス ポートは 50070 でした。HaDoop3.0 以降、Web アクセス ポートは 9870 でした。
WEB アクセスの問題

HDFS NameNode インターフェイス: http://evan-virtual-machine:8042
Ubuntu20.04 での Hadoop のローカル インストールと構成

1.2Hadoopスタンドアロン構成(非分散)

Hadoop インストール ディレクトリに切り替えます

cd /usr/local/hadoop

NameNode のフォーマット

./bin/hdfs namenode -format

入力ディレクトリと出力ディレクトリを生成する

mkdir ./input

mkdir ./output

Hadoopを開始する

./sbin/start-dfs.sh

プライマリ ノードとバックアップ ノードを表示する

jps

ここに画像の説明を挿入

cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*          # 查看运行结果

1.3 擬似分散実行mapreduce

1.3.1 core-site.xmlの構成

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/evan/文档/hadoop-tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://evan-virtual-machine:9000</value>
    </property>
</configuration>

1.3.2 hdfs-site.xmlの構成

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/evan/文档/hadoop-tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/evan/文档/hadoop-tmp/dfs/data</value>
    </property>
</configuration>

1.3.3yarn-site.xmlの設定

<configuration>
	<!-- reducer 获取数据的方式 -->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<!-- 指定 YARN 的 ResourceManager 的地址 -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>evan-virtual-machine</value>
	</property>
	<property>
		 <name>yarn.application.classpath</name>
		 <value>/usr/local/hadoop//etc/hadoop:/usr/local/hadoop//share/hadoop/common/lib/*:/usr/local/hadoop//share/hadoop/common/*:/usr/local/hadoop//share/hadoop/hdfs:/usr/local/hadoop//share/hadoop/hdfs/lib/*:/usr/local/hadoop//share/hadoop/hdfs/*:/usr/local/hadoop//share/hadoop/mapreduce/lib/*:/usr/local/hadoop//share/hadoop/mapreduce/*:/usr/local/hadoop//share/hadoop/yarn:/usr/local/hadoop//share/hadoop/yarn/lib/*:/usr/local/hadoop//share/hadoop/yarn/*</value>
   </property>
</configuration>

1.3.4 mapred-site.xml の構成

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
sudo vim /etc/hosts

1.3.5 ローカルホスト名と Hadoop ホスト名は同じでなければなりません (コメント::1行)

127.0.1.1	evan-virtual-machine(本地主机名)
127.0.0.1	evan-virtual-machine(Hadoop主机名)

ここに画像の説明を挿入

最後に、hadoop-env.sh ファイルとyarn-env.sh ファイルを JAVA_HOME=export JAVA_HOME=/usr/lib/java/jdk1.8.0_212 に追加します。

1.3.6 HDFS のインスタンスの作成

HDFS を使用する前に、Hadoop が実行されていることを確認する必要があります。

HDFS にユーザー ディレクトリを作成する

./bin/hdfs dfs -mkdir -p /user/hadoop

user/hadoop に入力フォルダーを作成し、etc/hadoop にある xml ファイルを入力フォルダーに入力ファイルとしてコピーします

./bin/hdfs dfs -mkdir /user/hadoop/input
./bin/hdfs dfs -put ./etc/hadoop/*.xml /user/hadoop/input

コピーが完了したら、コマンドでファイルリストを表示できます

./bin/hdfs dfs -ls /user/hadoop/input

画像の説明を追加してください
擬似分散実行中のmapreduceがHDFSファイルを読み取る

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep /user/hadoop/input /user/hadoop/output 'dfs[a-z.]+'

ここに画像の説明を挿入

コマンドを使用して実行結果を表示します。出力結果は HDFS にあります。

./bin/hdfs dfs -cat /user/hadoop/output/*

ここに画像の説明を挿入

空ではないディレクトリを削除する

./bin/hdfs dfs -rm -r /user/hadoop/output/

参考資料:擬似分散実行mapreduce

擬似分散操作に関連するエラー
1.hadoop3.1.3: メインクラス org.apache.hadoop.mapreduce.v2.app.MRAppMaster が見つからないかロードできませんでした

糸がMapReduceタスクを実行すると、メインクラスが見つかりません

解決策:
1. コマンドラインに「hadoop classpath」と入力します。

evan@evan-virtual-machine:/usr/local/hadoop$ hadoop classpath
/usr/local/hadoop//etc/hadoop:/usr/local/hadoop//share/hadoop/common/lib/*:/usr/local/hadoop//share/hadoop/common/*:/usr/local/hadoop//share/hadoop/hdfs:/usr/local/hadoop//share/hadoop/hdfs/lib/*:/usr/local/hadoop//share/hadoop/hdfs/*:/usr/local/hadoop//share/hadoop/mapreduce/lib/*:/usr/local/hadoop//share/hadoop/mapreduce/*:/usr/local/hadoop//share/hadoop/yarn:/usr/local/hadoop//share/hadoop/yarn/lib/*:/usr/local/hadoop//share/hadoop/yarn/*

2. 上記の出力値を、yarn-site.xml ファイル内の対応する属性yarn.application.classpathに追加します。例:

<property>
         <name>yarn.application.classpath</name>
         <value>/usr/local/hadoop//etc/hadoop:/usr/local/hadoop//share/hadoop/common/lib/*:/usr/local/hadoop//share/hadoop/common/*:/usr/local/hadoop//share/hadoop/hdfs:/usr/local/hadoop//share/hadoop/hdfs/lib/*:/usr/local/hadoop//share/hadoop/hdfs/*:/usr/local/hadoop//share/hadoop/mapreduce/lib/*:/usr/local/hadoop//share/hadoop/mapreduce/*:/usr/local/hadoop//share/hadoop/yarn:/usr/local/hadoop//share/hadoop/yarn/lib/*:/usr/local/hadoop//share/hadoop/yarn/*</value>
   </property>

1.4Hadoop クラスターのインストールと構成

1.4.1 ネットワーク構成

学習を開始する Hadoop クラスターは、1 つのマスター (Master) と 2 つのスレーブ (Slave1、Slave2) に従って構成されます。クラスタ内にはセットアップが必要なマシンが 2 台あるため、次の操作ではマスター ノードとスレーブ ノードの区別に注意する必要があります。マスター ノードとスレーブ ノードを区別するために、各ノードのホスト名を変更すると、Linux システムでターミナルを開いた後、ターミナル ウィンドウのタイトルにホスト名が表示され、コマンドラインを使用すると、現在のノードを区別しやすくなり、どのマシンで操作するかが簡単になります。Centos では、マスター ノードで次のコマンドを実行してホスト名を変更します。

sudo vim /etc/hostname

上記コマンドを実行すると、「/etc/hostname」というファイルが開かれ、このファイルにホスト名が記録されます。例えば、Centosシステムを想定すると、設定されているホスト名は「localhost」です。そのため、このファイルを開いた後、 「localhost」行の内容を直接削除して「Master」に変更し(大文字と小文字が区別されることに注意してください)、保存してvimエディタを終了すると、ホスト名の変更が完了します。 Linux システムのホスト名の変更を確認するには、再起動する必要があります。Alibaba Cloud ECS コンソールで、マスター インスタンスをクリックして再起動します。ホスト名の変更前後の変化に注意してください。

次に、マスター ノードで次のコマンドを実行して、マスター ノードの「/etc/hosts」ファイルを開いて変更します。

sudo vim /etc/hosts

hosts ファイルには、IP とホスト名の間に次の 2 つのマッピングを追加できます。

172.19.138.111 Master  Master
172.19.138.112 Slave1 Slave1
172.19.138.113 Slave2 Slave2

変更された効果を次の図に示します。
ここに画像の説明を挿入
一般に、hosts ファイルには 127.0.0.1 が 1 つだけ存在し、それに対応するホスト名は localhost であることに注意してください。冗長な 127.0.0.1 マッピングがある場合は、特に「127.0.0.1」などのマッピング レコードを削除する必要があります。 0.1マスター」は存在できません。変更後はマスターサーバーを再起動する必要があります。
ここに画像の説明を挿入

マスター ノードの構成は上記で完了しました。次のステップでは、引き続き他のスレーブ ノードの構成を変更します。上記の方法を参考に、Slave1、Slave2ノードの「/etc/hostname」ファイル内のホスト名を「Slave1」、「Slave2」に変更し、同時に「/etc/hosts」の内容も変更してください。 hosts ファイルに、IP とホスト名の間に次の 2 つのマッピングを追加します。

172.19.138.111 Master  Master
172.19.138.112 Slave1 Slave1
172.19.138.113 Slave2 Slave2

変更完了後、スレーブノードサーバを再起動してください。
これで、マスター ノードとスレーブ ノードの構成が完了しました。次に、各ノードで次のコマンドを実行して、相互に ping できるかどうかをテストする必要があります。ping が失敗した場合、その後の構成は成功しません。

ping Master -c 3   # 只ping 3次就会停止,否则要按Ctrl+c中断ping命令
ping Slave1 -c 3
ping Slave2 -c 3

たとえば、Master ノードの Master、Slave1、Slave2 に ping を実行すると、ping が成功すると下図のような結果が表示されます。
ここに画像の説明を挿入
注: 同じ構成のモデルを購入した場合、相互に ping を送信しても問題ありません。

1.4.2 パスワードなしの SSH ログイン ノード

マスター ノードは、SSH 経由でパスワードなしで各スレーブ ノードにログインできる必要があります。まず、マスター ノードの公開キーを生成します。公開キーが以前に生成されている場合は、ホスト名を以前に変更したため、以前に生成された公開キーを削除して、再度生成する必要があります。具体的なコマンドは以下のとおりです。

cd ~/.ssh              # 如果没有该目录,先执行一次ssh localhost
rm ./id_rsa*           # 删除之前生成的公匙(如果已经存在)
ssh-keygen -t rsa       # 执行该命令后,遇到提示信息,一直按回车就可以

マスター ノードがパスワード SSH なしでローカル マシンにログインできるようにするには、マスター ノードで次のコマンドを実行する必要があります。

cat ./id_rsa.pub >> ./authorized_keys

完了後、「ssh Master」コマンドを実行して検証します。プロンプトメッセージが表示される場合がありますので、「yes」と入力してください。テストが成功したら、「exit」コマンドを実行して元のターミナルに戻ってください。

スレーブ 1 ノードとスレーブ 2 ノードがそれぞれのサーバー上に作成されmkdir /home/hadoop/、次にマスター ノードが公開キーをスレーブ 1 ノードとスレーブ 2 ノードに送信します。

scp ~/.ssh/id_rsa.pub root@Slave1:/home/hadoop/
scp ~/.ssh/id_rsa.pub root@slave2:/home/hadoop/

次に、Slave1 ノードで、SSH 公開キーを認証に追加します。

ssh Slave1         # 需要输入登录密码
mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在,则忽略本命令
cat /home/hadoop/id_rsa.pub >> ~/.ssh/authorized_keys
rm /home/hadoop/id_rsa.pub    # 用完以后就可以删掉

次に、Slave2 ノードで、SSH 公開キーを認証に追加します。

ssh Slave2         # 需要输入登录密码
mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在,则忽略本命令
cat /home/hadoop/id_rsa.pub >> ~/.ssh/authorized_keys
rm /home/hadoop/id_rsa.pub    # 用完以后就可以删掉

他のスレーブ ノードがある場合は、マスター公開キーをスレーブ ノードに転送し、スレーブ ノードで認可を追加する 2 つの手順も実行されます。
このようにして、マスター ノードでは、パスワード SSH を使用せずに各スレーブ ノードにログインでき、マスター ノードで次のコマンドを実行して確認できます。

ssh Slave1

ここに画像の説明を挿入

1.4.3 PATH 変数の構成

前回の擬似分散インストールコンテンツでは、PATH変数の設定方法を紹介しました。同じ方法で設定できるため、hadoop や hdfs などのコマンドを任意のディレクトリで直接使用できます。PATH 変数が設定されていない場合は、マスター ノードで設定する必要があります。まずコマンドを実行します“vim ~/.bashrc”。つまり、vim エディターでファイルを開き“~/.bashrc”、ファイルの先頭に次の内容を追加します。

export JAVA_HOME=/home/hadoop/jdk1.8.0/          	   # 如果有就不要添加   
export JRE_HOME=$JAVA_HOME/jre                         # 如果有就不要添加
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib        # 如果有就不要添加
export PATH=$PATH:$JAVA_HOME/bin                       # 如果有就不要添加
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

保存後、「source ~/.bashrc」コマンドを実行して設定を有効にします。

1.4.4 クラスタ/分散環境の構成

“/usr/local/hadoop/etc/hadoop”クラスタ/分散モードを設定する場合、ディレクトリ内の設定ファイルを変更する必要がありますが、ここではworkers、core-site.xml、hdfs-site.xml、mapred-siteなど、通常起動に必要な設定のみを設定していますxml、yarn -site.xmlには合計5つのファイルがあります。その他の設定項目については公式の説明を参照してください。

1.4.4.1 ファイルワーカーを変更する

すべてのデータ ノードのホスト名をファイルに 1 行に 1 つずつ書き込む必要があり、デフォルトは localhost です (つまり、ローカル マシンがデータ ノードとして使用されます)。ノードがネームノードとデータノードの両方として機能する構成が採用されています。分散構成を行う場合、localhost を保持し、Master ノードをネームノードとデータノードとして同時に動作させることもできます。また、localhost の行を削除して、Master ノードをネームノードとしてのみ使用できるようにすることもできます。
このチュートリアルでは、マスター ノードは名前ノードとしてのみ使用されるため、ワーカー ファイル内の元のローカルホストを削除し、次の 2 行を追加します。

Slave1
Slave2
1.4.4.2 ファイル core-site.xml を変更する

core-site.xml が存在するルート ディレクトリに移動し、core-site.xml を変更します。

cd /usr/local/hadoop/etc/hadoop/
vim core-site.xml

core-site.xml ファイルは次のように変更されます。

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>
1.4.4.3 ファイル hdfs-site.xml を変更する

Hadoop の分散ファイル システム HDFS では、一般に冗長ストレージが使用され、冗長係数は通常 3、つまり 1 つのデータで 3 つのコピーが保存されます。このチュートリアルにはデータ ノードとして 2 つのスレーブ ノードがあります。つまり、クラスター内に 2 つのデータ ノードがあり、データのコピーを 2 つ保存できるため、dfs.replication の値は引き続き 2 に設定されます。hdfs-site.xml の具体的な内容は次のとおりです。

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>
1.4.4.4 ファイルmapred-site.xmlを変更する

「/usr/local/hadoop/etc/hadoop」ディレクトリにはmapred-site.xml.templateがあります。ファイル名を変更してmapred-site.xmlに名前を変更し、mapred-siteを設定する必要があります。 .xml ファイルを次のコンテンツに追加します。

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Master:19888</value>
        </property>
        <property>
                <name>yarn.app.mapreduce.am.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.map.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.reduce.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property> 
</configuration>
1.4.4.5 ファイルyarn-site.xmlを変更する

yarn-site.xml ファイルを次のように構成してください。

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

上記の 5 つのファイルをすべて構成したら、マスター ノードの「/usr/local/hadoop」フォルダーを各ノードにコピーする必要があります。以前に擬似分散モードを実行したことがある場合は、クラスター モードに切り替える前に、擬似分散モードで生成された一時ファイルを削除することをお勧めします。具体的には、最初にマスター ノードで次のコマンドを実行する必要があります。


cd /usr/local
sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件
sudo rm -r ./hadoop/logs/*   # 删除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制
cd ~
scp ./hadoop.master.tar.gz Slave1:/home/hadoop

次に、Slave1 ノードで次のコマンドを実行します。

sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)
sudo tar -zxf /home/hadoop/hadoop.master.tar.gz -C /usr/local
sudo chown -R root /usr/local/hadoop

同様に、Slave2ノードでもhadoop.master.tar.gzをSlaveノードに転送し、Slaveノードでファイルを解凍する操作が必要です。

scp ./hadoop.master.tar.gz Slave2:/home/hadoop
sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)
sudo tar -zxf /home/hadoop/hadoop.master.tar.gz -C /usr/local
sudo chown -R root /usr/local/hadoop

Hadoop クラスターを初めて起動するときは、最初にマスター ノードでネーム ノードをフォーマットする必要があります (これを実行する必要があるのは 1 回のみで、後で Hadoop を起動するときにネーム ノードを再度フォーマットする必要はありません)。コマンドは次のとおりです。以下に続きます:

hdfs namenode -format

これで Hadoop を起動できます。起動はマスター ノードで行う必要があります。次のコマンドを実行します。

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

各ノードで開始されたプロセスは、jps コマンドで表示できます。正しく開始されている場合は、次の図に示すように、マスター ノード上に NameNode、ResourceManager、SecondrryNameNode、および JobHistoryServer プロセスが表示されます。
ここに画像の説明を挿入

次の図に示すように、スレーブ ノードでは DataNode プロセスと NodeManager プロセスが表示されます。
ここに画像の説明を挿入
どちらのプロセスも存在しない場合は、エラーを示します。また、マスターノード上でコマンドを実行し、“hdfs dfsadmin -report”データノードが正常に起動するか確認する必要がありますが、画面情報の「Live datanodes」が0でなければクラスタは正常に起動しています。このチュートリアルでは、2 台のスレーブ ノードのみがデータ ノードとして機能するため、データ ノードが正常に起動されると、下図のような情報が表示されます。
ここに画像の説明を挿入
ここでも、擬似分散モードと分散モードを切り替える際には、次の点に注意する必要があります: (
a) 分散モードから擬似分散モードに切り替えるときは、スレーブ設定ファイルを忘れずに変更してください。
この 2 つを切り替えて、正常に起動できない状況が発生した場合は、関係するノードの一時フォルダーを削除すると、以前のデータは削除されますが、クラスターが正しく起動することが保証されます。したがって、以前はクラスターを起動できたが、後で起動できない場合、特にデータ ノードを起動できない場合は、すべてのノード (スレーブ ノードを含む) のフォルダーを削除し、再度実行してみて“/usr/local/hadoop/tmp”ください“hdfs namenode -format”。もう一度始めてください。

1.4.5 分散インスタンスの実行

分散インスタンスの実行手順は擬似分散モードと同様で、まずHDFS上にユーザーディレクトリを作成します。コマンドは以下の通りです。

hdfs dfs -mkdir -p /user/hadoop

次に、HDFS に入力ディレクトリを作成し、「/usr/local/hadoop/etc/hadoop」ディレクトリ内の構成ファイルを入力ファイルとして入力ディレクトリにコピーします。コマンドは次のとおりです。

hdfs dfs -mkdir /user/hadoop/input
hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml /user/hadoop/input

その後、MapReduce ジョブを実行できます。コマンドは次のとおりです。

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep /user/hadoop/input /user/hadoop/output 'dfs[a-z.]+'

実行時の出力情報は擬似分散と同様で、次の図に示すように、MapReduce ジョブの進行状況が表示されます。
ここに画像の説明を挿入
実行プロセスは少し遅いかもしれませんが、長時間進行状況がない場合、たとえば 5 分経っても進行状況に変化が見られない場合は、Hadoop を再起動して再度テストすることをお勧めします。それでも再起動に失敗する場合はメモリ不足が考えられますので、仮想マシンのメモリを増やすか、YARN のメモリ構成を変更して問題を解決することをお勧めします。

次に、コマンドを使用して、cat生成されたばかりの/user/hadoop/outputファイルの内容を表示します。

hdfs dfs -cat /user/hadoop/output/*

ここに画像の説明を挿入
最後に、Hadoop クラスターをシャットダウンするには、マスター ノードで次のコマンドを実行する必要があります。

stop-yarn.sh
stop-dfs.sh
mr-jobhistory-daemon.sh stop historyserver

1.5 OSS ストレージに基づいて Hadoop クラスターを構築する

1.5.0 より前に行うべき作業

ここに画像の説明を挿入

OSS 機能を有効にして"hadoop-demo1"バケットを作成します ( https://oss.console.aliyun.com/bucket/oss-cn-shenzhen/hadoop-demo1/object )

ここに画像の説明を挿入

次の手順で使用する AccessKey.csv をダウンロードします。

1.5.1 設定ファイルの変更

1.5.1.1 ファイル core-site.xml を変更する

core-site.xml が存在するルート ディレクトリに移動し、core-site.xml を変更します。

cd /usr/local/hadoop/etc/hadoop/
vim core-site.xml

core-site.xml ファイルは次のように変更されます。

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Master:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
        <property>
                <name>hadoop.native.lib</name>
                <value>false</value>
                <description>Should native hadoop libraries, if present, be used.</description>
        </property>
        <property>
                <name>fs.oss.endpoint</name>
                <value>oss-cn-shenzhen-internal.aliyuncs.com</value>
        </property>
        <property>
                <name>fs.oss.accessKeyId</name>
                <value>LTAI5tFVBTAG5KtrHCoKaTn2</value>
                <description>Aliyun access key ID</description>
        </property>
        <property>
                <name>fs.oss.accessKeySecret</name>
                <value>TGEy9IXM62GgdhMcamVCO1mv2WKIQX</value>
                <description>Aliyun access key secret</description>
        </property>
        <property>
                <name>fs.oss.impl</name>
                <value>org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem</value>
        </property>
        <property>
                <name>fs.oss.buffer.dir</name>
                <value>/tmp/oss</value>
        </property>
</configuration>

1.5.1.2 ファイルmapred-site.xmlを変更する

「/usr/local/hadoop/etc/hadoop」ディレクトリにはmapred-site.xml.templateがあります。ファイル名を変更してmapred-site.xmlに名前を変更し、mapred-siteを設定する必要があります。 .xml ファイルを次のコンテンツに追加します。

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>Master:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>Master:19888</value>
        </property>
        <property>
                <name>yarn.app.mapreduce.am.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.map.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.reduce.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.application.classpath</name>
                <value>
                        /usr/local/hadoop/etc/hadoop,
                        /usr/local/hadoop/share/hadoop/common/*,
                        /usr/local/hadoop/share/hadoop/common/lib/*,
                        /usr/local/hadoop/share/hadoop/hdfs/*,
                        /usr/local/hadoop/share/hadoop/hdfs/lib/*,
                        /usr/local/hadoop/share/hadoop/mapreduce/*,
                        /usr/local/hadoop/share/hadoop/mapreduce/lib/*,
                        /usr/local/hadoop/share/hadoop/yarn/*,
                        /usr/local/hadoop/share/hadoop/yarn/lib/*,
                        /usr/local/hadoop/share/hadoop/tools/lib/*
                </value>
        </property>
        <property>
                <name>mapreduce.map.memory.mb</name>
                <value>2048</value>
        </property>
        <property>
                <name>mapreduce.reduce.memory.mb</name>
                <value>2048</value>
         </property>
</configuration>
1.5.1.3 ファイルyarn-site.xmlを変更する

yarn-site.xml ファイルを次のように構成してください。

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
                <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
                <name>yarn.resourcemanager.address</name>
                <value>Master:8032</value>
        </property>
        <property>
                <name>yarn.resourcemanager.scheduler.address</name>
                <value>Master:8030</value>
        </property>
        <property>
                <name>yarn.resourcemanager.resource-tracker.address</name>
                <value>Master:8031</value>
        </property>
        <property>
                <name>yarn.resourcemanager.admin.address</name>
                <value>Master:8033</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>Master:8088</value>
        </property>
</configuration>

上記の 5 つのファイルをすべて構成したら、マスター ノードの「/usr/local/hadoop」フォルダーを各ノードにコピーする必要があります。以前に擬似分散モードを実行したことがある場合は、クラスター モードに切り替える前に、擬似分散モードで生成された一時ファイルを削除することをお勧めします。具体的には、最初にマスター ノードで次のコマンドを実行する必要があります。


cd /usr/local
sudo rm -r ./hadoop/tmp     # 删除 Hadoop 临时文件
sudo rm -r ./hadoop/logs/*   # 删除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先压缩再复制
cd ~
scp ./hadoop.master.tar.gz Slave1:/home/hadoop

次に、Slave1 ノードで次のコマンドを実行します。

sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)
sudo tar -zxf /home/hadoop/hadoop.master.tar.gz -C /usr/local
sudo chown -R root /usr/local/hadoop

同様に、Slave2ノードでもhadoop.master.tar.gzをSlaveノードに転送し、Slaveノードでファイルを解凍する操作が必要です。

scp ./hadoop.master.tar.gz Slave2:/home/hadoop
sudo rm -r /usr/local/hadoop    # 删掉旧的(如果存在)
sudo tar -zxf /home/hadoop/hadoop.master.tar.gz -C /usr/local
sudo chown -R root /usr/local/hadoop

Hadoop クラスターを起動するときは、最初にマスター ノードでネーム ノードをフォーマットする必要があります (これを実行する必要があるのは 1 回のみで、後で Hadoop を起動するときにネーム ノードを再度フォーマットする必要はありません)。コマンドは次のとおりです。

hdfs namenode -format
1.5.1.4 マスターノードでクラスターを起動する

マスター ノードで、Hadoop メイン ディレクトリに入り、dfs を開始します。

cd   $HADOOP_HOME
sbin/start-all.sh
1.5.1.5 マスターノードでdfsが正常に動作することを確認する

次のコマンドを実行して、hdfs 上にフォルダー my-test-dir を作成し、フォルダーを表示して削除します。これらのすべてで期待どおりの結果が返されます。

$HADOOP_HOME/bin/hadoop fs -mkdir /my-test-dir
$HADOOP_HOME/bin/hadoop fs -ls /
$HADOOP_HOME/bin/hadoop fs -rm -r /my-test-dir
1.5.1.6 マスターノードのdfsの基本情報を確認する
$HADOOP_HOME/bin/hdfs  dfsadmin  -report

$HADOOP_HOME/bin/hdfs  dfsadmin  -report | grep Hostname

ファイルシステムの基本情報と統計情報が正しく報告されます。

1.5.2 AliyunOSS データソースに基づいて Hadoop 環境を検証する

1.5.2.1 マスターノードでの Hadoop の再起動
cd   /usr/local/hadoop
sbin/stop-all.sh  
sbin/start-all.sh

バケットの内容が表示できれば、AliyunOSS データ ソースの構成が成功したことを意味します。

$HADOOP_HOME/bin/hadoop fs -ls oss://hadoop-demo1/
$HADOOP_HOME/bin/hadoop fs -mkdir oss://hadoop-demo1/input
$HADOOP_HOME/bin/hadoop fs -ls oss://hadoop-demo1/

$HADOOP_HOME/bin/hadoop fs -put /usr/local/hadoop/README.txt oss://bucket-hadoop/input/README.txt
$HADOOP_HOME/bin/hadoop fs -ls oss://hadoop-demo1/input

実行wordcountして確認する

$HADOOP_HOME/bin/hadoop fs -rm -r oss://hadoop-demo1/output

$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0-beta1.jar  wordcount oss://bucket-hadoop/input/README.txt oss://hadoop-demo1/output

$HADOOP_HOME/bin/hadoop fs -cat oss://hadoop-demo1/output/part-r-00000

ここに画像の説明を挿入

次に、次の 2 つのコマンドをそれぞれ実行します。同じ統計結果が返される場合は、OSS ベースの Hadoop マルチマシン環境が正常に実行されていることを意味しますwordcount

$HADOOP_HOME/bin/hadoop fs -cat oss://hadoop-demo1/output/part-r-00000 | grep hadoop | wc -l

$HADOOP_HOME/bin/hadoop fs -cat oss://hadoop-demo1/input/README.txt | grep hadoop | wc -l

ここに画像の説明を挿入

※参考文献

Alibaba Cloud: プリエンプティブ ECS インスタンスに基づく低コストのオフライン ビッグ データ分析
Alibaba Cloud: OSS ストレージに基づいた Hadoop クラスターの構築

2.HDFS

Lin Ziyu HDFS プログラミングの実践

2.1 共通コマンドの概要

2.1.1 ディレクトリの操作

1. hdfs のルート ディレクトリにあるファイルを表示します。
hdfs dfs -ls /

2. hdfs ディレクトリ内のすべてのファイル構造を表示する

例: ルート ディレクトリ内のすべてのファイル構造を表示します。

hdfs dfs -ls -R /
hdfs dfs -lsr /

例: ルート ファイル tmp の下にあるすべてのファイルのリストを表示します。

hdfs dfs -ls -R /tmp/
hdfs dfs -lsr /tmp/

3. フォルダーを作成する

例: ルート ファイルの test ディレクトリに、test2 を作成します。

hdfs dfs -mkdir /test/test2

または:

hdfs dfs -mkdir hdfs://49.2.1.1/test/test123/

4. フォルダーの作成 - フォルダーを再帰的に作成します
hdfs dfs -mkdir -p /test/test3/test4/

5. ローカル ファイルを hdfs のディレクトリに移動してアップロードします
hdfs dfs -moveFromLocal /opt/hadoop/servers/test/hellow.txt /test/test123

6.hfdsの再帰的削除
hdfs dfs -rm -r /test

7.hdfs はフォルダーのアクセス許可を付与します
hdfs dfs -chmod -R -777 /

2.1.2 ファイル操作

1. hdfs ファイルをローカルにダウンロードします。
hdfs dfs -get /test/test123/hellow.txt /opt/hadoop/servers/

2. HDFS内のファイルの移動
hdfs dfs -mv /test/test123/ /test/test2/

3. ローカルファイルを hdfs のディレクトリに置きます
hdfs dfs -put /opt/hadoop/servers/test/ /tmp/

4. HDFS 上のファイルの内容を表示します。
hdfs dfs -cat /test/test2/test123/hellow.txt

5. 1 つ以上のファイルを hdfs で指定したファイルに追加します。コマンド ラインから入力を読み取ることもできます。

例: ローカルの aa.txt を hdfs の hellow.txt に追加します。

hdfs dfs -appendToFile /opt/hadoop/servers/test/aa.txt /test/test2/test123/hellow.txt

例: ローカル bb.txt cc.txt を hdfs の hellow.txt に追加します。

hdfs dfs -appendToFile /opt/hadoop/servers/test/bb.txt /opt/hadoop/servers/test/cc.txt /test/test2/test123/hellow.txt

6. HDF間のファイルコピー:ファイル(フォルダー)をコピー、上書き可能、元の権限情報を保持可能
hdfs dfs -cp /test/test2/test123/hellow.txt /test/

7.hdfs ファイルを削除する
hdfs dfs -rm /test/test2/test123/hellow.txt

2.1.3 パラメータ分析

1.取得
格式   hdfs dfs  -get [-ignorecrc ]  [-crc]  <src> <localdst>

作用:将文件拷贝到本地文件系统。 CRC 校验失败的文件通过-ignorecrc选项拷贝。 文件和CRC校验和可以通过-CRC选项拷贝

hdfs dfs  -get   /install.log  /export/servers

2.チャウン
格式:      hdfs   dfs  -chmod  [-R]  URI[URI  ...]
作用:    改变文件的所属用户和用户组。如果使用  -R 选项,则对整个目录有效递归执行。使用这一命令的用户必须是文件的所属用户,或者超级用户。

hdfs  dfs  -chown  -R hadoop:hadoop  /install.log

3. Hbase の記事

Hbase Web インターフェイス:http://evan-virtual-machine:16010/master-status#generaltasks

3.1 Zookeeperの設置

共通コマンド

1.1 インストール パッケージをパス /usr/local に解凍します。コマンドは次のとおりです。

evan@evan-virtual-machine:~/下载$ sudo tar -zxf apache-zookeeper-3.5.9.tar.gz -C /usr/local

1.2 使いやすいように、解凍されたファイル名を「apache-zookeeper-3.5.9」から「zookeeper」に変更します。

cd /usr/local
sudo mv ./apache-zookeeper-3.5.9 ./zookeeper

Zookeeper ディレクトリのアクセス許可を evan ユーザーに付与します。

cd /usr/local
sudo chown -R evan ./zookeeper

1.3 環境変数の構成
hbase の下にある bin ディレクトリをパスに追加します。これにより、hbase を起動するために /usr/local/zookeeper ディレクトリに移動する必要がなくなり、zookeeper の使用が大幅に容易になります。チュートリアルの次の部分でも、/usr/local/zookeeper ディレクトリ操作に切り替わります。これは、初心者が実行プロセスを理解するのに役立ち、熟練した後は切り替える必要はありません。

~/.bashrc ファイルを編集する

vim ~/.bashrc

PATH が導入されていない場合は、~/.bashrc ファイルの末尾に次の内容を追加してください。

export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:/usr/local/zookeeper/bin

1.4 構成ファイルを作成します
ダウンロード リンク:パス /usr/local/zookeeper/zookeeper-3.5.9/conf の下にあるzookeeper-3.5.9 を
作成し、zoo.cfg ファイルを開いて次の変更を加えます。まず空のファイルzoo.cfgを作成し、zoo_sample.cfgの内容をzoo.cfgにコピーします。

$ sudo cp -v zoo_sample.cfg zoo.cfg
$ sudo vi zoo.cfg # 修改zoo.cfg文件

画像の説明を追加してください

tickTime = 2000
dataDir=/usr/local/zookeeper
clientPort = 2080
initLimit = 5
syncLimit = 2

Zoo.cfg ファイルを変更した後、Zookeeper のルート ディレクトリに戻って tmp ディレクトリを作成します。

$ cd /usr/local/zookeeper
$ sudo mkdir tmp
$ sudo chown -R evan tmp

1.5 飼育員を始める

$ ./bin/zkServer.sh start

正常に開くと、次の内容が表示されます。
ここに画像の説明を挿入

Zookeeper のインストール リファレンス

Zookeeper のダウンロード アドレス: http://mirror.bit.edu.cn/apache/zookeeper/

  1. ubuntu18.04にZookeeperをインストールする
  2. 3 台のサーバーが Zookeeper クラスターを構築
Zookeeper 関連のエラー
  1. java.net.BindException: アドレスはすでに使用されています (バインド失敗)

なお、zoo.cfgファイルの設定時にログの出力ディレクトリが指定されていますが、まだ作成されていないため、mkdirで作成する必要があります。

Zoo.cfg の dataDir を変更し、 に置き換えdataDir=/usr/local/zookeeper、ポートを に置き換えます。clientPort=2080

HbBase 関連のエラー

HADOOP_ORG.APACHE.HADOOP.HBASE.UTIL。

4.ハイブ記事

Ubuntu インストール mysql をダウンロード

Lin Ziyu: MySQL の Ubuntu インストールと一般的な操作
Ubuntu での MySQL のアンインストール、インストール、およびインストール後のデフォルト構成の変更

エラーを報告する

Mysql に「ERROR1698 (28000): ユーザー root@localhost のアクセスが拒否されました」と表示されるエラー解決方法

おすすめ

転載: blog.csdn.net/weixin_43849871/article/details/120140635