AWS Certified Cloud Practitioner (CLF-C02) 認定試験 合格

職場が変わりAWSを使うことになったので一からAWSの学習をしています。

Azureでクラウド環境には慣れていたのですが、AWSのサービス名やAWS特有の知識というものもあるので慣れるのに少々時間がかかります。

ということで、強制的に知識を詰め込むためにAWS Certified Cloud Practitioner 認定の試験を受験し合格しました。

使った教材と問題集はこちらです。

いろいろと覚えてしまえば試験はそこまで難しくなく、クラウドの技術に触れていれば基本的には合格できる内容の試験です。

AZ-900:Microsoft Azure の基礎(Microsoft Azure Fundamentals)に近いものがありますが、AZ-900は無料バウチャーを取得するチャンスがあるのに対してAWS Certified Cloud Practitioner (CLF-C02)は有料で受験するしかなさそうです。

ただ、AWSの場合は試験に受かれば次回の試験は50% Offになるようなので、次に最上位の試験を受ければトータルのコストは抑えられると思います。

ということで、簡単な試験合格体験談でした。


ちなみに試験前 | AWS 認定に関する情報とポリシー | AWSを確認して気が付きましたが、2024 年 4 月 1 日以降から試験の料金が値上げされるようです。

もしAWSの資格取得を検討されている方がいらっしゃるようであれば、早めに受験してしまった方が良さそうですね。

シリコンバレー(Silicon Valley)シーズン6

シリコンバレー(Silicon Valley)シーズン6が最終シーズン。やっと観ることができました。

最終シーズンともなると主人公たちの会社Pied Piperもかなり大きくなり、動く金額や世の中への影響も大きな会社になっています。

こんな夢のある会社で働いてみたかったなと思いつつドラマを楽しみました(笑)


2023年は「AI」元年とも呼ばれ、一般ユーザーが日々使えるレベルに「AI」が浸透してきました。

シーズン6が放送されていたのが2019年なのでChatGPTなども一般ユーザーの認知度は低かったと思いますが、ドラマの中では「AI」が頻繁に登場し当時を振り返ると少し未来を見据えたストーリーだったのかと思ったりします。

「AI」を開発する人たちには当たり前なのかもしれませんが、「AI」のアウトプットが生成されるロジックはブラックボックスになっており予測不能な時もあるため、ドラマの展開にもそのことが良く使われています。


2024年も「AI」の社会進出が進み、ますます未来が読めない世の中になって行きそうですがそんな世の中を少し想像できる展開と結末になっています。

IT関連の仕事をしている人には是非お勧めしたいドラマです。

Spark and Iceberg on WSL2/Ubuntu その1

WSL2上のUbuntu 22.04.3 LTSでSpark and Icebergを試してみます。

まずはDocker/Docker Composeをインストールします。以下のサイト通りに実施すれば使えるようになります。

Install Docker Engine on Ubuntu | Docker Docs

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

続いて以下のサイトにある通りにdocker-compose.ymlを準備し、Spark and Icebergを試す環境を作ります。

Spark and Iceberg Quickstart

docker-compose.yml

version: "3"

services:
  spark-iceberg:
    image: tabulario/spark-iceberg
    container_name: spark-iceberg
    build: spark/
    networks:
      iceberg_net:
    depends_on:
      - rest
      - minio
    volumes:
      - ./warehouse:/home/iceberg/warehouse
      - ./notebooks:/home/iceberg/notebooks/notebooks
    environment:
      - AWS_ACCESS_KEY_ID=admin
      - AWS_SECRET_ACCESS_KEY=password
      - AWS_REGION=us-east-1
    ports:
      - 8888:8888
      - 8080:8080
      - 10000:10000
      - 10001:10001
  rest:
    image: tabulario/iceberg-rest
    container_name: iceberg-rest
    networks:
      iceberg_net:
    ports:
      - 8181:8181
    environment:
      - AWS_ACCESS_KEY_ID=admin
      - AWS_SECRET_ACCESS_KEY=password
      - AWS_REGION=us-east-1
      - CATALOG_WAREHOUSE=s3://warehouse/
      - CATALOG_IO__IMPL=org.apache.iceberg.aws.s3.S3FileIO
      - CATALOG_S3_ENDPOINT=http://minio:9000
  minio:
    image: minio/minio
    container_name: minio
    environment:
      - MINIO_ROOT_USER=admin
      - MINIO_ROOT_PASSWORD=password
      - MINIO_DOMAIN=minio
    networks:
      iceberg_net:
        aliases:
          - warehouse.minio
    ports:
      - 9001:9001
      - 9000:9000
    command: ["server", "/data", "--console-address", ":9001"]
  mc:
    depends_on:
      - minio
    image: minio/mc
    container_name: mc
    networks:
      iceberg_net:
    environment:
      - AWS_ACCESS_KEY_ID=admin
      - AWS_SECRET_ACCESS_KEY=password
      - AWS_REGION=us-east-1
    entrypoint: >
      /bin/sh -c "
      until (/usr/bin/mc config host add minio http://minio:9000 admin password) do echo '...waiting...' && sleep 1; done;
      /usr/bin/mc rm -r --force minio/warehouse;
      /usr/bin/mc mb minio/warehouse;
      /usr/bin/mc policy set public minio/warehouse;
      tail -f /dev/null
      "      
networks:
  iceberg_net:

サイトにはdocker-compose upで起動するように書かれていますが、先ほどインストールしたDocker ComposeはVersion 2なので以下のコマンドで起動します。

> docker compose up

spark-icebergが起動できたらSparkSQLを使ってテーブルを作り、INSERTとSELECTを試してみます。

もう1つコンソールを開いてspark-icebergに接続し、spark-sqlを立ち上げます。

> docker exec -it spark-iceberg spark-sql

以下実行結果

Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
24/01/01 09:39:41 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
24/01/01 09:39:43 WARN Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
Spark Web UI available at http://2157a499f607:4041
Spark master: local[*], Application Id: local-1704101983121
spark-sql ()>

続いてCREATE TABLE/INSERT/SELECTの実行。

以下CREATE TABLE実行結果

spark-sql ()> CREATE TABLE demo.nyc.taxis
            > (
            >   vendor_id bigint,
            >   trip_id bigint,
            >   trip_distance float,
            >   fare_amount double,
            >   store_and_fwd_flag string
            > )
            > PARTITIONED BY (vendor_id);
Time taken: 2.788 seconds

以下INSERT実行結果
spark-sql ()> INSERT INTO demo.nyc.taxis
            > VALUES (1, 1000371, 1.8, 15.32, 'N'), (2, 1000372, 2.5, 22.15, 'N'), (2, 1000373, 0.9, 9.01, 'N'), (1, 1000374, 8.4, 42.13, 'Y');
Time taken: 4.687 seconds

以下SELECT実行結果

spark-sql ()> SELECT * FROM demo.nyc.taxis;
1       1000371 1.8     15.32   N
1       1000374 8.4     42.13   Y
2       1000372 2.5     22.15   N
2       1000373 0.9     9.01    N
Time taken: 0.896 seconds, Fetched 4 row(s)

WSL2 Error code: Wsl/Service/CreateInstance/MountVhd/HCS/ERROR_FILE_NOT_FOUND

久しぶりにWSL2上でUbuntuを使っていろいろ試していた際に、何度かUbuntuをアンインストール・インストールを繰り返していたら以下のエラーが発生しUbuntuが起動できなくなりました。

ディスク 'C:\Users\tworks55\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx' を WSL2 にアタッチできませんでした: 指定されたファイルが見つかりません。
Error code: Wsl/Service/CreateInstance/MountVhd/HCS/ERROR_FILE_NOT_FOUND
Press any key to continue...

対処方法は簡単で、一度WSLに登録されているUbuntuを登録解除すれば良いようです。

C:\>wsl -l
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu (既定)

C:\>wsl --unregister Ubuntu
登録解除。
この操作を正しく終了しました。

改めてUbuntuを起動すればアカウント登録から設定を開始できます。

Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:

DataLake / LakeHouseの動向 その1

データプラットフォームの候補として色々調べているところですが、恥ずかしながらHadoop/Hive全盛時代の浅い知識しかなく勉強しなおしています。

NTTデータさんが公開されている2019年の資料「大規模データ活用向けストレージレイヤソフトのこれまでとこれから」を見るとApache KUDU, Apache hudi, Delta Lakeが登場してきたのがこの頃のようです。 OLTP/OLAPどちらの用途にも使えるプラットフォームの構築をしたいのですが、このような情報を見るとおそらく一昔前までは難しかったことが、最近のテクノロジーを使えば行けるような気がします。

続いて2020年の資料を見るとApache Iceberg, Apache Hudi, Delta Lakeの3つが掲載されています。Apache KUDUはどこに行ったのでしょう…?ひとまず深追いせずに進めます。

ここで気になるのはやはりDelta LakeとApache Hudiですが一旦Google Trendでも調べてみました。やはり一番検索されているのはDelta Lakeで関連キーワードも一番多く出てきます。

Delta LakeとApache Hudiについては、上記2020年のカンファレンスで使われた別の資料があります。

この頃のApache Hudiはまだ開発中の様子ですが、2023/11/26現在もまだVersion 1.0はunder active developmentとの記載があります。 今年中にはVersion 1.0が出そうな気がしますので要確認です。

続いてDelta Lakeの資料です。

Delta Lakeもこの時はまだVersion 1.0になっていなかったのかVersion 0.7.0でベンチマークが取得されています。 2023/11/26現在は、Delta Lake 3.0.0 | Delta Lakeとなっており、大きくVersionが更新されています。 DataBricksの活用が増えているのもDelta Lakeの進化が要因の1つとなっているかもしれません。

Apache Hudiもここから進化していると思いますので別途調査が必要です。

続きを読む