CUBE SUGAR CONTAINER

技術系のこと書きます。

CentOS7

Apache Hive を JDBC 経由で操作する

以前、Apache Hive の環境構築についてこのブログで書いた。 blog.amedama.jp 上記では Hive を操作するのに、同梱されたシェルを使っていた。 今回は JDBC (Java Database Connectivity) を使って操作する例を示す。 環境については先ほど紹介したエントリ…

Apache Spark を完全分散モードの YARN クラスタで動かす

Apache Spark を使って複数ノードで分散並列処理をする場合、まずは動作させるためのクラスタマネージャを選ぶことになる。 Apache Spark では以下のクラスタマネージャに対応している。 Apache Spark 組み込み (これはスタンドアロンモードと呼ばれる) Apac…

CentOS7 で Apache Hadoop の完全分散モードを使ってみる

以前、このブログでは OSS 版の Apache Hadoop を疑似分散モードでセットアップする方法を試した。 疑似分散モードというのは、一つのホスト上に必要なデーモンを全て立ち上げる方法を指す。 このモードを使うと HDFS が使えるような、なるべく本番に近い環…

CentOS7 で Apache HBase を使ってみる

今回は分散データベースの一つである Apache HBase を使ってみる。 これは、いわゆる NoSQL と呼ばれるものの一つ。 Hadoop ファミリーの一員だけど MapReduce などは使わず直接 HDFS を触るアーキテクチャになっている。 HBase は、分散データベースの性質…

CentOS7 で Apache Hive を使ってみる

今回は Apache Hadoop 上で動作する MapReduce アプリケーションの一つ Apache Hive を使ってみる。 Apache Hive を使うと Hadoop/HDFS の上で HiveQL という SQL のサブセットが使えるようになる。 実行したクエリは MapReduce のジョブに変換されて Hadoop…

Python から Hadoop Streaming を使ってみる

今回は、任意のプログラミング言語から Apache Hadoop を使うことのできる Hadoop Streaming という機能を使ってみる。 通常、Hadoop を使って MapReduce のジョブを直接扱うときは Java を使ってマッパーとリデューサーを書くことになる。 ただ、ご存知の通…

CentOS7 で Apache Hadoop の疑似分散モードを使ってみる

Apache Hadoop はビッグデータ処理基盤を構築するための超有名なオープンソースソフトウェア。 Google の発表した論文を元にして MapReduce アルゴリズムと Hadoop Distributed File System (HDFS) が実装されている。 この Hadoop/HDFS を中心として Apache…

CentOS7 で Docker Swarm を試してみる

先日リリースされた Docker 1.12 から Docker Swarm が本体に同梱されるようになった。 この Docker Swarm というのは、複数の Docker ホストを束ねて使えるようにするオーケストレーションツールになっている。 今回は、その Docker Swarm がどういったもの…

Python: SQLAlchemy + mysqlclient (MySQLdb) でマルチバイト文字を扱う

今回は Python の O/R マッパーである SQLAlchemy と MySQL ドライバの mysqlclient を使ってマルチバイト文字を扱うときの注意点について書いてみる。 ただし RDBMS については MySQL ではなく、代わりに MariaDB を使った。 注意点というのを先に書いてし…

Python: インターネットと疎通がない環境に Python パッケージをインストールする (改)

このブログでは、以前にインターネットと疎通のない環境で Python パッケージをインストールする方法について書いたことがある。 具体的には Wheel でパッケージングした配布物を pip を使ってインストールしていた。 blog.amedama.jp ただ、上記の記事には…

CentOS: rpm でファイルが含まれるパッケージを調べる

なんか毎回忘れるのでメモっておく。 パッケージシステムの基盤として rpm を使っている Linux ディストリビューションでファイルがどのパッケージに含まれるか調べるやり方。 使った環境は次の通り。 $ cat /etc/redhat-release CentOS Linux release 7.2.1…

Xvfb を使って仮想ディスプレイを作る

Xvfb (X virtual framebuffer) は X Window System の仮想ディスプレイを作ることのできるソフトウェア。 これを使うと実際にスクリーンがない状態でも GUI が必要なソフトウェアを使えるようになる。 今回使う環境には CentOS7 を選んだ。 $ cat /etc/redha…

CentOS7 で Docker を使ってみる

Docker はコンテナ型ハードウェア仮想化と呼ばれる技術を用いたアプリケーション配布用のプラットフォーム。 今回はその Docker を CentOS7 で一通り使ってみる。 $ cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) $ uname -r 3.10.0-229.14…

LVM (Logicl Volume Manager) を使ってみる

LVM (Logicl Volume Manager) はブロックデバイスを VG (Volume Group) という単位で束ねた上で、そこから LV (Logical Volume) という論理的なボリュームで切り出して使うことで柔軟性の高い管理を実現できる機能。 今回は、その LVM の基本的な使い方につ…

Linux のループデバイスを使ってみる

ループデバイスは Linux でイメージファイルをハードディスクのようなブロックデバイスとして扱うための機能。 今回使う環境は CentOS7 にした。 $ cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) $ uname -r 3.10.0-229.14.1.el7.x86_64 dd…

CentOS7 に mysqlclient (MySQL-python fork) をインストールする

mysqlclient は MySQL-python からフォークして Python 3 に対応したもの。 今回はそれを CentOS7 にインストールしてみる。 PIP をインストールする まずは Python のパッケージマネージャである PIP をインストールする。 get-pip.py を使ってもいいけど、…

CentOS7 に RDO のリポジトリから Open vSwitch をインストールする

RDO のリポジトリは本来 OpenStack をインストールするのに使われるもの。 ただ、OpenStack が Open vSwitch を使っているため、そのインストールに使うこともできる。 まず、RDO のリポジトリを登録するための RPM をインストールする $ sudo yum install -…

CentOS7 で不要になった古いカーネルを削除する

CentOS7 のカーネルは定期的にアップデートされるけど、何もしないとアップデート後も古いカーネルはそのままディスク上に残っている。 古いカーネルが残ること自体は、新しいカーネルで何か問題があったときに古いバージョンに戻すことができるのでむしろ良…

Galera Cluster の書き込みノードはひとつに制限した方が良さそう

Galera Cluster は MySQL/MariaDB をマルチマスタ構成で冗長化するためのアプリケーション。 マルチマスタなので、本来はどのノードに対しても書き込みを行うことができる。 ただ、後述する理由からどうやら書き込みに使うノードはひとつに制限した方が良さ…

インターネットと疎通がないマシンに Python パッケージをインストールする

たまにインターネットと疎通がないマシンをデプロイしなきゃいけないこともあると思う。 今回は、そんな時にどうやって Python のパッケージを対象ホストにインストールすればいいかについて書く。 要約を先に書いておくと、まず OS のパッケージシステムを…

sudo 時に root のパスワードを使う

sudo は一般ユーザが一時的に root 権限を得るためのコマンドだけど、デフォルトでは実行したユーザのパスワードを要求する場合がある。 ただ、実際には root のパスワードを要求させたいシチュエーションも多くありそう。 今回はそれを実現する方法を試して…

Ansible: Dynamic Inventory を使ってみる

通常の Inventory は ini 形式を拡張したテキストファイルで、中には Ansible で管理したいホストと変数の情報が書き込まれている。 しかし、これだとホストの台数や名前などが動的に変化するシチュエーションでメンテナンスが難しい。 あとは、ホストの情報…

Python: mod_wsgi のログを rsyslog と logrotate でローテーションする

今回は mod_wsgi で動作させた WSGI アプリケーションのログを syslog で飛ばして、それを rsyslog で受信して logrotate でローテーションさせてみる。 尚、Apache httpd 本体のログを syslog で飛ばす方法は以下を参照のこと。 blog.amedama.jp 検証用の環…

Apache httpd のログを rsyslog と logrotate でローテーションする

今回は Apache httpd のログを syslog 経由で rsyslog に送った上で、そのログを logrotate でローテーションさせてみる。 このやり方であればログをローテートする際に httpd を再起動する必要がないためサービス停止が発生しない。 環境には CentOS7 を使…

CentOS7 に後から GUI (X Window System) を追加する

CentOS7 を Minimal なんかでインストールした後にやっぱり GUI が欲しくなることもある。 デスクトップ環境が欲しい場合 デスクトップ環境が必要な場合は yum groupinstall で "GNOME Desktop" をインストールする。 $ sudo yum -y groupinstall "GNOME Des…

Ansible: notify と handlers の使い方について調べた

今回は Ansible の Playbook で使える notify と handlers の使い方について調べてみる。 このふたつはペアになっていて、タスクに notify を書いておくと、そのタスクで状態に変更があった場合にそれと対応する handlers が実行される仕組みになっている。 …

インターネットと疎通がないマシンに yum で RPM をインストールする

たまにインターネットとは直接疎通のないマシンをデプロイしなきゃいけないことがあるんだけど、今回はそんなときどうすれば yum で RPM をインストールできるかというお話。 検証環境には CentOS7 を使った。 基本的には CentOS6 でも動作するはず。 $ cat …

MariaDB のデータを mysqldump でバックアップ・リストアする

MySQL (MariaDB) のデータをバックアップ・リストアする方法には色々なやり方があるみたい。 今回は、その中でも最もオーソドックスな mysqldump を使う方法を試してみる。 また、mysqldump はその時点でのデータベースの内容を全て書き出すフルバックアップ…

MariaDB Galera Cluster - Known Limitations について調べた

MariaDB Galera Cluster は MariaDB を同期レプリケーション型のマルチマスタ構成で冗長化するためのアプリケーションだ。 マスタ・スレーブ構成のようにフォールバック用のスクリプトを自分で用意する必要もないし、マルチマスタ構成なのでクラスタを構成す…

Docker v1.8 から RHEL/CentOS6 はサポート外になった

表題の通り Docker バージョン 1.8 から RHEL/CentOS6 はサポート外になった。 今後は Docker を使いたい場合 RHEL/CentOS7 を使う必要がある。 もうちょっと詳しく調べてみる 以下のチケットが Docker バージョン 1.8 のリリースされるちょっと前に話題にな…

rsync で効率的にファイルを同期する

rsync はファイルを別のディレクトリやリモートのホストと同期させるためのプログラムだ。 例えば rsync の代わりに cp コマンドを使った場合、宛先の状態に関わらず全てのファイルがコピーされてしまう。 それに対し rsync では、宛先の状態を確認して異な…

RCS (Revision Control System) を使ってファイルをバージョン管理する

RCS (Revision Control System) は大昔に使われていたバージョン管理システムだ。 21 世紀にもなって何で RCS なんかとも思うんだけど、恐竜が生きていた頃に作られたシステムの中には今でもファイルを RCS で管理しているものももしかすると残っていたりす…

sysbench を使って MySQL をベンチマークする

MySQL の設定や構成またはバージョンの違いによるパフォーマンスの変化を調べるにはベンチマークツールが必要になる。 今回は sysbench というツールを使って MySQL のパフォーマンスを測ってみよう。 検証環境には CentOS7 を使った。 $ cat /etc/redhat-re…

MariaDB Galera Cluster を CentOS7 で使ってみる

MySQL (MariaDB) の冗長化には Master-Slave 構成を組んだり MySQL Cluster を使ったりと色々ある。 その中で Galera Cluster は同期レプリケーションを用いたマルチマスタ型のクラスタが組むやり方だ。 今回はこの MariaDB Galera Cluster を CentOS7 で組…

HAProxy のログを rsyslog と logrotate でローテーションする

今回は RDB サーバや HTTP サーバを冗長化する際にロードバランサと共に用いられることが多い HAProxy のログを rsyslog と logrotate を使ってローテーションする際の設定について書く。 検証用の環境には CentOS7 を使った。 $ cat /etc/redhat-release Ce…

keepalived のログを rsyslog と logrotate でローテーションする

今回はホストの冗長化するのに使う keepalived のログを rsyslog と logrotate を使ってローテーションさせる方法について書く。 検証環境には CentOS7 を使った。 $ cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) $ uname -r 3.10.0-229.1…

xinetd を使ってホストの状態を監視する

xinetd はスーパーサーバと呼ばれるプログラムで、あるポートに対してアクセスがあった際に設定ファイルを元にして特定のサービスを起動することができる。 以前はプログラムを常駐させないことでメモリの節約などに使うことが主な用途だったようだが、メモ…

ログローテーション機能のないプログラムのログを logrotate でローテートする

ログローテーションを実現するには二つのやり方がある。 一つ目はログを出力するアプリケーション側でローテーションの機能を作りこむやり方で、もう一つは今回扱う logrotate のように別のプログラムを使うやり方だ。 今回は Python で書かれたログローテー…

Python: mod_wsgi の組み込みモードとデーモンモードについて

Python で Web アプリケーションを開発する場合、WSGI という仕様に沿った形で作られているとアプリケーションのポータビリティが向上する。 WSGI の仕様に沿っているアプリケーションは、異なる実装の WSGI サーバであっても動作させることができるためだ。…