2018年12月28日金曜日

2018年振り返り

  • このエントリーをはてなブックマークに追加


--- ---

2018年振り返り

久しぶりにブログを書きます。
いろいろがあって(書く時間がないか、書くものがないか、書きたい気分ではないか、どっちもあると思います)、あまりかけてないのがこの一年半でした。

2018年はいろんな意味で有意義な一年になりました。

  • 大学卒業10年、来日も10年
    10年、長いか、短いか、どっちも言えますが、この10年特に大きな挫折がなく過ごしてきました。家庭、仕事、子供などなど。二、三年おきに大きなイベントありました。人生三分の一は日本にいます。こう考えると長いと感じています。
    これからも、おそらくずっと日本にいます。三分の一は二分の一、四分の三、という感じに変わっていくだろう。今後は自分どうなるかあまり想像していないが、未来より現在を大事にするのが今までのポリシーで、これからも変わらないと思います。むしろ変えたくないです。

  • サイバーエージェント退職しHortonworksに入社
    今まで、JBS、GMOクリック証券、CyberAgentで貴重な経験させていただきました。
    JBS時代は、主にMicrosoftサーバー製品(Windows Server[AD, DNS, File Server…], Exchange Server, SharePoint Server, Office 365, Hyper-V、System Center製品群などなど)をベースにしたソリューション設計、構築をやってました。社内向けのサポート、製品検証、ちょっとしたツール開発などもやりました。

    GMOクリック証券時代は、インフラエンジニアとして一年ちょっとくらいやってました。土曜にデータセンターでの作業が多かったです。ハードラッキング、OSいれて、ミドル入れて、開発に渡すみたいな感じでした。障害対応もチーム内でローテーションでやってました。アラートメールが来たときにドキドキ感が今でも覚えています。
    GMOの後半2年くらいは、開発やってました。Java、GoLang、Scala、PHPなどでいくつかプロジェクトやってました。海外のトレーディングシステムのコア部分のテストも経験しました。
    もう一つ重要なプロジェクトは社内のビッグデータ基盤の運用でした。HortonworksのHDPを使ってました。

    サイバーエージェント時代は、主に社内ビッグデータ基盤周りの開発と運用業務でした。プロトタイプのHadoopクラスタ管理ツール開発したり、Kuduによるファストデータ活用で、Kafka, Flume, Kudu, Prestoなどを検証し、本番導入したりしました。ClouderaのCDHを使ってました。

    そして縁があってHortonworksにSEとして入社しました。BigData関連のソリューションアーキテクトとして、お客さんに提案する立場になりました。いかに製品や技術をわかりやすい言葉でお客さんに紹介するか、実践しながらコツを掴んできています。最初は緊張やうまく表現できない部分もありましたが、じょじょに慣れてつまづいたときも臨機応変で対応できるようになりつつある。これからも更に進化していきたいと思います。
    来年はHortonworksは長年競争してきたClouderaと合併します。2強が一つになって、それぞれいいところ(製品など)をとって更に進化したプロダクトがリリースされることを期待しています。BigData、AI業界もますます盛り上がるのではないかと思っています。

  • 最後に来年三人目の子供が生まれる予定
    名前を考え中です。笑)

2018年の振り返り書きながら、過去10年みたいな振り返りになってしまいました。
過去の記憶や経験を思い出しながら、現在の毎日を大切にして、未来を迎えたいと思います。
今後もいいことがたくさんあるように。

2017年6月27日火曜日

CentOS Pamでケルベロス認証 グループ制限

  • このエントリーをはてなブックマークに追加


CentOS Pamでケルベロス認証 グループ制限 Pamでケルベロス認証のための設定をメモしておきます。
グループでログイン制御することもできます。
参考情報
https://www.linux.iastate.edu/content/using-pam-kerberos-authentication-and-group-access-control
/etc/pam.d/system-authのサンプル
testgroup以外のユーザーはログインできないようにする
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
# only allow auth for member of testgroup
auth        requisite    pam_succeed_if.so user ingroup testgroup
auth        requisite     pam_succeed_if.so uid >= 500 quiet
# for kerberos
auth        sufficient    pam_krb5.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
# for kerberos
account     [default=bad success=ok user_unknown=ignore] pam_krb5.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
# for kerberos
password    sufficient    pam_krb5.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
# for kerberos
session     optional      pam_krb5.so
グループ制御ではingroup, notingroupというのがあります。
ingroupはグループ内のユーザーしかログインできない
notingroupはグループに所属していないユーザーしかログインできない。

2017年6月15日木曜日

Hortonworks ODBCでHIVEServerに接続する設定手順

  • このエントリーをはてなブックマークに追加


HortonWorks ODBCでHIVEServerに接続する設定手順 ODBCでHIVEに接続する手順をメモしておきます。

HortonWorksサイトからODBCドライバーをダウンロード

https://jp.hortonworks.com/downloads/
Hortonworks ODBC Driver for Apache Hive (v2.1.7)

ODBCドライバーをインストール

 $ sudo rpm -ivh hive-odbc-native-2.1.7.1010-1.el6.x86_64.rpm

 インストール先確認
 $ ls /usr/lib/hive/lib/native

.odbc.iniを作成

 $ cd /usr/lib/hive/lib/native/Linux-amd64-64
 $ cat .odbc.ini
 ---------------------------------------------------------------
 [ODBC]

 [ODBC Data Sources]
 HIVE

 [HIVE]
 Driver=/usr/lib/hive/lib/native/Linux-amd64-64/libhortonworkshiveodbc64.so
 #環境ごとに変更
 HOST=srv.example.com
 PORT=10000
 Schema=
 ServiceDiscoveryMode=0
 ZKNamespace=
 HiveServerType=2
 #kerberos認証にするため、AuthMechを1に設定
 AuthMech=1
 ThriftTransport=1
 UseNativeQuery=0
 UID=hue
 #環境ごとに変更
 KrbHostFQDN=srv.example.com
 KrbServiceName=hive
 #環境ごとに変更
 KrbRealm=example.com
 SSL=0
 TwoWaySSL=0
 ClientCert=
 ClientPrivateKey=
 ClientPrivateKeyPassword=
 ---------------------------------------------------------------
 権限変更、しないとエラーが出る可能性があります。
 $ chmod 777 .odbc.ini
サンプルファイルは以下にあります。
 /usr/lib/hive/lib/native/hiveodbc/Setup/odbc.ini

環境変数設定

xport ODBCINI=/usr/lib/hive/lib/native/Linux-amd64-64/.odbc.ini
 or
/etc/profileにexport ODBCINI=/usr/lib/hive/lib/native/Linux-amd64-64/.odbc.ini を追加

参考Kerberos設定

$ cat /etc/krb5.conf
# Configuration snippets may be placed in this directory as well
#includedir /etc/krb5.conf.d/

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = EXAMPLE.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 30d
 renew_lifetime = 7d
 forwardable = true

# for One-Way Trust with Active Directory
 permitted_enctypes   = des-cbc-crc des-cbc-md5 arcfour-hmac aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96
 udp_preference_limit = 1

[realms]
 EXAMPLE.COM = {
  kdc = or
hostname> admin_server = or hostname> } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM

ERROR

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
  File "/tmp/hound/hound/tbx/hoover/_hoover_price.py", line 75, in fetch_hoover_price
    verbose=verbose
  File "/tmp/hound/hound/tbx/odbc/_odbc.py", line 55, in execute
    autocommit=True
pyodbc.Error: ('08001', '[08001] [unixODBC][Hortonworks][ODBC] (10380) Unable to establish a connection with data source. Missing settings: {[Host] [Port]} (10380) (SQLDriverConnect)')
  • 解決
    .odbc.iniファイルの権限を見直す 777にするとか

2017年2月14日火曜日

Mac Juypter インストール時にエラー [Errno 1] Operation not permitted

  • このエントリーをはてなブックマークに追加


Mac Juypter インストール時にエラー [Errno 1] Operation not permitted Mac にJuypterをインストールしようとすると、以下のようなエラーが発生しました。
sudo pip install jupyter
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/Library/Python/2.7/site-packages/pip/req/req_set.py", line 778, in install
    requirement.uninstall(auto_confirm=True)
  File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 754, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/Library/Python/2.7/site-packages/pip/req/req_uninstall.py", line 115, in remove
    renames(path, new_path)
  File "/Library/Python/2.7/site-packages/pip/utils/__init__.py", line 267, in renames
    shutil.move(old, new)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 299, in move
    copytree(src, real_dst, symlinks=True)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 208, in copytree
    raise Error, errors
Error: [('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py', '/tmp/pip-KoEdh2-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py', "[Errno 1] Operation not permitted: '/tmp/pip-KoEdh2-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc', '/tmp/pip-KoEdh2-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-KoEdh2-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py', '/tmp/pip-KoEdh2-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py', "[Errno 1] Operation not permitted: '/tmp/pip-KoEdh2-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc', '/tmp/pip-KoEdh2-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-KoEdh2-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib', '/tmp/pip-KoEdh2-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib', "[Errno 1] Operation not permitted: '/tmp/pip-KoEdh2-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib'")]

解決

python 再度インストール
brew reinstall python
再度実行で成功

2017年2月12日日曜日

AWS Lambda RDSにデータをInsertするとError発生時にアラート通知

  • このエントリーをはてなブックマークに追加


AWS Lambda RDSにデータをInsertするとError発生時にアラート通知 AWS LambdaでRDSにデータをインサートする処理を実現しています。
正しくインサートするときに何もしなく、そのまま終了、
インサートするときにエラーが発生した場合は、Alertメールで通知したい。

Sample Code

var mysql = require('mysql');
exports.handler = function(event,context,callback){
    var No = event.No
    var Birth = event.Birth
    var Email = event.Email
    var Name = event.Name

    if(No == null || Birth == null || Email == null || Name == null){
        context.done('FAILED');
    }

    var connection = mysql.createConnection({
      host     : 'rds endpoint url', //RDSのエンドポイント
      user     : 'root', //MySQLのユーザ名
      password : 'password', //MySQLのパスワード
      database : 'db'
    });

    connection.connect();

    var insert_sql = "insert into User (No, Birth, Email, Name) value ('" + No + "','" + Birth +"','" + Email +"','" + Name + "')"
    connection.query(insert_sql, function(err, rows, fields) {
      if (err)
      {
        console.log("--err");
        console.log(err);
        callback(new Error("FAILED"));
      }
    });

    connection.end(function(err) {
        context.done('SUCCESSED');  
    });
}

Lambdaモニタリング設定

「Lambda ⇒ 「関数」 ⇒ 「モニタリング」タブで【呼び出しエラー】というものがあります。
monitoring
これを設定すればエラー発生したら、設定したメールアドレスにメールが飛びます。
エラー(Errors)
が>=1
を1回連続した場合

間隔:5分間
統計:Standard
などの値を設定し、通知の送信先を選択する。
alert
これでうまくいくかと思いきゃ、実は成功のときも、エラーが通知されてしまいます。よくないね。いろいろ調べたところ、このエラーは以下の意味を示しています。
http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/lam-metricscollected.html
- 処理された例外 (context.fail(error) など)
- コードの終了を起こす処理されない例外
- メモリ不足例外
- タイムアウト
- 権限エラー

解決

ソースコードの以下の部分が悪かった。
 connection.end(function(err) {
        context.done('SUCCESSED');  
    });
これだと、実行後常にエラーメッセージSuccessedで以上終了してしまいます。
以下のように変更すれば、正常に終了されます。
 connection.end(function(err) {
        context.done();  
    });
結構ハマりました。