ablog

不器用で落着きのない技術者のメモ

2018-01-01から1年間の記事一覧

文鎮化した S3 バケットを元に戻す

AWS

誤ったバケットポリシーを設定したり、バケットポリシーで特定のVPCエンドポイントからのみのアクセスを許可していてそのVPCエンドポイントを消してしまったりしてS3バケットに一切アクセスできず文鎮化してしまった場合の対処法。root アカウントのシークレ…

サーバ負荷をシンプルに評価する指標 "sysload"

たしか、4年くらい前にデータベース系のイベントで瀬島さんと横道さんと話しているときにそういうものを作っているとちらっと聞いて気になっていたので、ブログ見たときに sysload は「あの時、聞いたやつだ」と思い出した。 はるか昔kernel 2.6 の頃、Load …

Aurora PostgreSQL互換でフェイルオーバーを高速化する

AWS

Linux の TCP Keep Alive パラメータ tcp_keepalive_time = 1 tcp_keepalive_intvl = 1 tcp_keepalive_probes = 5 JavaのDNS キャッシュタイムアウトの短縮 // Sets internal TTL to match the Aurora RO Endpoint TTL java.security.Security.setProperty("…

Aurora MySQL互換のフェイルオーバー

AWS

障害挿入クエリ(Fault Injection Queries) INSTANCE はMySQLインスタンスをクラッシュさせる。 DISPATCHER はクラスターボリュームに書込むディスパッチャをクラッシュさせる。 NODEはMySQLインスタンスとディスパッチャの両方をクラッシュさせ、キャッシ…

Aurora のエンドポイント

AWS

クラスターエンドポイント $ dig +trace aurora-postgres105.cluster-********.ap-northeast-1.rds.amazonaws.com ; <<>> DiG 9.8.3-P1 <<>> +trace aurora-postgres105.cluster-********.ap-northeast-1.rds.amazonaws.com ;; global options: +cmd . 12416…

fio の結果の見方

Client1: (groupid=0, jobs=1): err= 0: pid=16109: Sat Jun 24 12:07:54 2017 write: IOPS=88, BW=623KiB/s (638kB/s)(30.4MiB/50032msec) slat (nsec): min=500, max=145500, avg=8318.00, stdev=4781.50 clat (usec): min=170, max=78367, avg=4019.02, s…

EFS を使ってみる

AWS

インストールとマウント $ sudo yum install -y amazon-efs-utils fio $ sudo mkdir /efs $ sudo mount -t efs -o tls fs-d462f79c:/ /efs ベンチマーク実行 $ sudo fio -filename=/efs/test1 -rw=read -direct=1 -bs=4k -size=2G -numjobs=2 -runtime=10 -g…

Redshift の "ERROR: 1023 DETAIL: Serializable isolation violation"

準備 psql で Redshift に接続する。 psql "host=ds2xl-2n.******.us-west-2.redshift.amazonaws.com user=awsuser dbname=mydb port=5439" テーブルを作成してデータを投入する。 \echo :AUTOCOMMIT; CREATE TABLE tab1 (col1 INTEGER NOT NULL); CREATE TA…

Amazon chime の Chat room の URL を確認する

AWS

https://app.chime.aws/rooms/ にアクセスすると自分が参加している chat room の一覧が表示されるので、chat room をクリックすると URL にジャンプする。chato room への invite を依頼しなくてもリンクをクリックすると、アクセス許可依頼が飛ぶ。

RDS Oracle EE 作成時に "Please specify an option group containing the TDE HSM option" と怒られる

AWS

事象 RDS Oracle (Enterprise Edition) でデータベース作成時に"Please specify an option group containing the TDE HSM option" と怒られる。 Please specify an option group containing the TDE HSM option (Service: AmazonRDS; Status Code: 400; Erro…

SwingBench の Data Generator で Sales History のデータを生成する

準備 RDS Oracle RDS Oracle データベースを作成する。 EC2 EC2インスタンスを作成する。 JDKをインストールする。 $ sudo yum install -y java-1.8.0-openjdk.x86_64 Data Generator をダウンロードする。 $ wget http://dominicgiles.com/swingbench/datag…

Hive で Parquet にクエリすると ParquetDecodingException: Can not read value at 0 in block -1 in file

AWS

事象 Hive で Parquet にクエリすると "java.io.IOException: org.apache.parquet.io.ParquetDecodingException: Can not read value at 0 in block -1 in file" と怒られる。 $ hive Logging initialized using configuration in file:/etc/hive/conf.dist/…

QuickSight で Athena にクエリしようとすると Access Denied と怒られる

AWS

事象 Athenaから直接クエリを実行できるが、QuickSightから同じテーブルにクエリすると "Access Denied" と怒られる。 [Simba][AthenaJDBC](100071) An error has been thrown from the AWS Athena client. Access Denied 原因 QuickSight でユーザー作成時…

Spark DataFrame の repartition メソッドは何をするものか

Spark DataFrame の repartition(パーティション数, カラム名) とすると指定したカラムで指定したパーティション数にパーティショニングする。パーティション数を省略するとデフォルト値(Spark 2.3.2 では 200)になる。 repartition(numPartitions, *cols)…

CloudFront で Distribution の Origin Domain Name を変更して切り替るまでのタイムラグ

AWS

CloudFront で Distribution の Origin Domain Name を変更して切り替るまでのタイムラグは TTL でコントロールできる。 AWSマネジメントコンソールで CloudFront を選択し、[Distribution]-[Origins and Origin Groups]を選択し、[Edit]で編集する。 Origin…

macOS Sierra で DNS リゾルバキャッシュを確認する方法

/var/log/system.log を tail して、 % tail -f /var/log/system.log 以下のコマンドで出力する。 % sudo killall -INFO mDNSResponder 参考 sierra - mDNSResponder not logging - Ask Different % man mDNSResponder (中略) By default, only log level …

DNS の TTL はキャッシュサーバとリゾルバキャッシュで使われる

AWS

DNSのレコードはDNSのキャッシュサーバでもキャッシュされるし、クライアントOSのDNSリゾルバでもキャッシュされ、キャッシュ期間は TTL で決まる。従って、DNS変更時に浸透するまでのタイムラグを短くしたい場合は、事前に TTL を短くしておき十分に浸透し…

Presto でParquet にクエリするとjava.lang.UnsupportedOperationException: com.facebook.presto.spi.type.LongDecimalType

事象 S3のParquetファイルにHiveカタログで外部表を定義して、Presto でクエリすると、"java.lang.UnsupportedOperationException: com.facebook.presto.spi.type.LongDecimalType" という例外が発生する。 $ hive CREATE EXTERNAL TABLE IF NOT EXISTS sh10…

はてなダイアリーからはてなブログに移行しました

ablog は はてなダイアリー から はてなブログ に移行しました。

Google 認証を使ってALBで認証する

AWS

Google Identity Platformで OAuthクライアントID発行 Google Cloud Platform にアクセスし Google アカウントでログインする。 任意の名前でプロジェクトを作成する。 [認証情報を作成]-[OAuth クライアント ID]をクリックする。 [同意画面を設定]をクリッ…

ssh接続せずにAWSマネジメントコンソールからEC2にログインしてシェルを実行する

AWS

IAMポリシー"AmazonSSMManagedInstanceCore"を付与したIAMロールをEC2にアタッチする。 AWSマネジメントコンソールにログインして Systems Manager をクリックする。 [セッションの開始]をクリックする。 インスタンスを選択して[セッションの開始]をクリッ…

Hive on EMR で S3 Select を有効化してI/O量を削減する

AWS

Hive on EMR で S3 Select を有効化すると、I/O量が削減され、実行時間が短縮することを確認した*1。 検証結果 通常 hive> select count(tax_region) from sh10.json_sales★ where tax_region = 'US'; Query ID = hadoop_20181125201846_ceb61407-d775-4399-…

CloudFormation で EMR クラスター作成時に Bootstrap Action を実行する

AWS

CloudFormation で EMR クラスター作成時に Bootstrap Action を実行したメモ。 master.yaml --- AWSTemplateFormatVersion: '2010-09-09' Description: Main Template For Workshop Parameters: (中略) CFnS3Bucket: Description: Specify an Amazon S3 t…

CloudFormation で EMR クラスター作成時に Presto の S3 Select Pushdown を有効化する

AWS

CloudFormation で EMR クラスター(EMR リリース 5.18.0以降)作成時に Presto の S3 Select Pushdown を有効化する方法をメモ。 AWSTemplateFormatVersion: '2010-09-09' Description: Stack to create EMR Cluster. Parameters: InstanceType: Type: Stri…

s3 cp でクロスアカウントでバケット間コピーすると "An error occurred (AccessDenied) when calling the UploadPartCopy operation" と怒られる

AWS

事象 s3 cp でクロスアカウントでバケット間コピーすると "Access Denied" と怒られる。コピー元バケットからEC2へのコピーや、EC2からコピー先のバケットへのコピーは成功する。 $ aws s3 cp --recursive s3://cp-from/ s3://cp-to/ copy failed: s3://cp-f…

s3 cp でクロスアカウントでバケット間コピーする際のコピー元バケットに参照権限を付与するバケットポリシー

AWS

AWS CLI(aws s3 cp --recursive s3://... s3://...)でクロスアカウントでS3バケット間コピーする際にコピー元バケットで参照権限のみ許可するバケットポリシーの例。 { "Version": "2012-10-17", "Id": "Policy1543071477610", "Statement": [ { "Sid": "S…

EMRで PySpark を実行すると java.io.FileNotFoundException: /stderr (Permission denied) とエラーメッセージが出力される

AWS

以下では解決しない。解決策が分かったら更新予定。 事象 EMR(emr-5.19.0) で PySpark を実行すると、"java.io.FileNotFoundException: /stderr (Permission denied)"、"java.io.FileNotFoundException: /stdout (Permission denied)" というエラーメッセー…

Presto on EMR で "deserializer does not exist: org.openx.data.jsonserde.JsonSerDe" と怒られる

AWS

事象 Presto on EMR で JSON の外部テーブルにクエリを実行すると "deserializer does not exist: org.openx.data.jsonserde.JsonSerDe" と怒られる。 $ hive hive> CREATE EXTERNAL TABLE IF NOT EXISTS sh10.json_sales( (中略) ) ROW FORMAT SERDE 'org…

ECS で EC2 と Fargate の起動タイプのタスクを併用して同じアプリケーションを実行する

AWS

ECS で EC2 と Fargate の起動タイプのタスクを併用して同じアプリケーションを実行してみた。ワークロードがない場合は、EC2 の1タスクだけ実行され(Fargate のタスクは 0)、EC2 のCPU使用率が50%を超えると EC2 に1タスク追加され、EC2 のCPU使用率が80%…

S3オブジェクトのバージョン一覧を表示する

AWS

S3 で複数バージョン存在するオブジェクトをリストアップする。 $ aws s3api list-object-versions --bucket az-test-bucket|jq -r '.Versions[].Key'|sort|uniq -c|perl -lane '$F[0] > 1 and print' 2 swingbench/data/gz/sh10/sales/test2.txt 3 swingben…