segmentation fault orz

日頃の技術的興味をつらつらと…

windowsでscala開発環境を作る(IntelliJ)

環境情報

OS: Windows7 Home Premium
Java開発環境: Oracle JDK 1.8u92 64bit
Scala: 2.11.8
ビルドツール: sbt (IntelliJが自動ダウンロード)
IDE: IntelliJ IDEA

Java開発環境のインストール

下記より該当のJDKをダウンロード&インストール。193MBと重め。
Java SE Development Kit 8 - Downloads

[システムのプロパティ]→[環境変数]より環境変数のPATH設定を実施。
その後、コマンドプロンプトにてjavacをうち応答があることを確認。

Scalaのインストール

下記より最新のScalaをダウンロード&インストール。こちらも109MBで重め。
Download | The Scala Programming Language

[システムのプロパティ] → [環境変数]より環境変数のPATH設定を実施。
その後、コマンドプロンプトにてscalaをうち応答があることを確認。

IDEのインストール

以下より、IntelliJのCommunity Editionをダウンロード&インストール。253MB。
IntelliJ IDEA :: Download Latest Version of IntelliJ IDEA
[Download featured plugins]にてScalaを選択。

まずは使ってみる

[New Project] → [Scala] → [SBT]を選択。
f:id:gu38409:20160507161324p:plain

Java SDK及びScalaのパスが通っていることが求められたが、
Project SDKのパスを自動判定してくれなかったので、手動設定。
f:id:gu38409:20160507161559p:plain

新規Scalaクラスを作ります。
f:id:gu38409:20160507161607p:plain

Hello Worldが無事通りました。
f:id:gu38409:20160507161612p:plain


hadoopのビルド

hadoopというものがはやってきているらしく、ソースコードも読みだしたので
自分でビルドぐらいできるようにならねばと思い、こころみた。


環境概要
======================

Macbook Air 11インチ最小構成
java 1.7u51
git 1.7.12 (ソースコードのダウンロード)
maven-3.0.4 (手動インストール)
protocolbuffer-2.5.0 (configure -> make)
eclipse kepler
hadoop trunk

手順
======================

1.hadoopソースコードをclone

 $ git clone git://git.apache.org/hadoop-common.git

2.Oracle javaをインストール
(省略)

3.eclipseをインストール
(省略)

4.protocol bufferをインストール
一部はまったが、下記により解消。
http://d.hatena.ne.jp/torazuka/20111201/protobuf

5.ビルド
BULDING.txtにしたがい、ひとまず打ってみる。

 $ mvn package -DskipTests -Dtar

[ERROR] Failed to execute goal on project hadoop-annotations: Could not resolve dependencies for project org.apache.hadoop:hadoop-annotations:jar:3.0.0-SNAPSHOT: Could not find artifact jdk.tools:jdk.tools:jar:1.7 at specified path /usr/java/jre1.7.0_51/../lib/tools.jar -> [Help 1]

ぬう。。。

BUINDING.txtによると、Javaディレクトリの中身にシンボリックリンクを作るらしい。

 $ cd /usr/java/default
 $ sudo mkdir Classes
 $ cd Classes
 $ sudo ln -s ../lib/tools.jar classes.jar

続いてビルド

 $ cd /path/to/hadoop-src/
 $ mvn package -DskipTests -Dtar

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

めでたしめでたし。
targetもできたようなので、次はeclipseでpatchでも書いてみるか。
疲れたので今日はこれでおしまい。

webコンテナ経由でjenkins起動

jenkinsというビルドを補助してくれるものに興味を持ったので作ってみた。
一部はまったのでメモ。


構成
=====================

ホスト
- MacbookAir + VMware Fusion(CentOS 6.4)

コンテナ:
- tomcat8.0.3

jenkins:
- jenkins 1.552

java
- java 1.7.0_51

別段他のサービスも予定していないのでApacheなどはいれないことに。



手順
=====================

以下を参考にtomcat配備。


https://wiki.jenkins-ci.org/display/JA/Tomcat
http://www.beeete2.com/blog/?p=410

手順は以下。

1.javaインストール

$ rpm -ivh jre-7u51-linux-x64.rpm

2.tomcatダウンロード->展開

# tar zxvf apache-tomcat-8.0.3.tar.gz
# mv apache-tomcat-8.0.3/ /usr/local/
# useradd -s /sbin/nologin tomcat
# cd /usr/local/
# chown -R tomcat:tomcat apache-tomcat-8.0.3
# ln -s apache-tomcat-8.0.3 tomcat
# vim /etc/profile

(前略)
export JRE_HOME=/usr/java/default
export CATALINA_HOME=/usr/local/tomcat

3.tomcat起動 -> 動作確認

# sudo -u tomcat /usr/local/tomcat/bin/startup.sh

http://localhost:8080/より「Manager App」を選択、リジェクトされる。。。

再設定。

# cat /usr/local/tomcat/conf/tomcat-users.xml

中身は以下。

(略)
  <user username="tomcat" password="hogehoge" roles="admin-script,manager-script"/>
(略)

4.jenkins.warのダウンロード -> 配置

http://localhost:8080/より「Managet App」を選択、今度はうまくいく。
「WARファイルの配備」よりjenkins.warを選択。
配備ボタンを押すも、/jenkinsが実行されず、以下のエラーが出た。

the request was rejected because its size (67098882) exceeds the configured maximum (52428800)

調べてみると、デフォルトで配備できる最大サイズが50MBらしいので、100MBに変更する。

# cat /usr/local/tomcat/webapps/manager/WEB-INF/web.xml

中身は以下。

(略)
  <max-file-size>104857600</max-file-size>
  <max-request-size>104857600</max-request-size>
  <file-size-threshold>0</file-size-threshold>
(略)

再度起動も、以下のエラー。

Could not initialize class sun.awt.X11GraphicsEnvironment

X11?そんなの使うのか?
調べてみると、javaの起動オプションでoffにすると解決するらしいとの情報を得た。

https://sbforge.org/jira/browse/NAS-1801

startup.shにてJAVA_OPTSに「-Djava.awt.headless=true」を追加すると確かに解決できた。

おしまい。さてさて何をビルドしようかね。

vmware へのCentOS6.4の導入

今回はvmwareCentOS 6.4を入れてみます。

 

バージョンは以下。

 

- VMホスト: Windows 7

- 仮想化ソフト: VMWare Player 5.0.2

- ゲストOS: CentOS 6.4

 

以前に書籍の「CentOS 6 で作るネットワークサーバ構築ガイド」に同梱されていたCDを使ってインストールして色々いじっていたが、カーネルのコンパイルを試みたがディスク容量が少なくて頓挫したので、リベンジ。

 

 * vmware-vdiskmanagerを使ってみる

下記サイトを参考に、ディスクの増設ツールをゲットして構築開始。VMware Serverは2011年1月末でサポート終了とのことなので、VMware workstationを入れてみる。

 

VMWareでハードディスク増設

http://server-setting.info/centos/vmware_disk.html

 

事前にVMware Playerはアンインストールし、vmware-vdiskmanager.exeを取り出したら、再度VMware Playerを入れる。ライブラリもないと怒られる。

 

以下でディスクを拡張する。何やらwarningが出るが気にしない。

 

----

> vmware-vdiskmanager.exe -x 100Gb VMバーチャルディスク名.vmdk

 

  Grow: 100% done.
Disk expansion completed successfully.

WARNING: If the virtual disk is partitioned, you must use a third-party
         utility in the virtual machine to expand the size of the
         partitions. For more information, see:
         http://www.vmware.com/support/kb/enduser/std_adp.php?p_faqid=1647

 

 

そして起動後に"df -h"...あれ?ルート領域の4GB以上の領域が見えない。。。/home以下は見えているのに。

 

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2
                      3.9G  2.5G  1.3G  67% /

/dev/sda1              49M   44M  2.7M  95% /boot

/dev/sda5              14G  231M   13G   2% /home
tmpfs                 498M   80K  498M   1% /dev/shm

どうやら、「単一ファイルに保存」すると見えなくなるらしい。lvdisplayではちゃんと100GB見えているのに。どこに4GB制限があるのかググったがあまり有用な解は得られなかった。

仕方ないので、「複数ファイルに保存」にして再構築。 vmware-vdiskmanager結局いらなかった…??

 

 * 再構築(LVM作成ほか)

「ハードウェア」→「追加」から新規のSCSI接続のディスク(100GB)ファイルを作成し、LVMとして構築する。「複数ファイルに保存」を選択すると、Windowsのエクスプローラからは<ディスクファイル名>-s0xx (xxは01から51)と見えた。

後でリサイズできると便利なので、ひとまずLVMで50GB程度の領域を作ってその上にファイルシステムを乗せることにする。

以下は、構築前のマウント状況。ルート領域はちゃんと20GB程度見えている。。。

 

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              18G  2.4G   15G  15% /
tmpfs                 495M   84K  495M   1% /dev/shm
/dev/sda1             291M   33M  243M  12% /boot

100GBの新規ディスクは/dev/sdbとして認識されていた。

# ls -l /dev/sdb

brw-rw----. 1 root disk      8,  16 Jul 27 09:56 sdb

以下でファイルシステムを作っていく。

# fdisk /dev/sdb

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-13054, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054):
Using default value 13054

Command (m for help): p 

Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd5fcc0b7

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       13054   104856223+  83  Linux

# ls -l /dev  | grep sdb
brw-rw----. 1 root disk      8,  16 Jul 27 10:02 sdb
brw-rw----. 1 root disk      8,  17 Jul 27 10:02 sdb1

 

概ねOKか。次に物理ボリュームを作成。

# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

 

次に、一つの物理ボリュームからなるボリュームグループを作成。

 

# vgcreate VolGroup00 /dev/sdb1
  Volume group "VolGroup00" successfully created

最後にLVMを作成。サイズは50GBとした。

 

# lvcreate -L 50G -n LogVol00 VolGroup00
  Logical volume "LogVol00" created

次に、ファイルシステムを作成。

 

# mkfs -t ext4 /dev/VolGroup00/LogVol00
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3276800 inodes, 13107200 blocks
655360 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
400 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424

Writing inode tables: done                           
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

 

次にマウントしてみる。

 

#mount -t ext4 /dev/VolGroup00/LogVol00 /mnt/tmp/
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              18G  2.5G   15G  15% /
tmpfs                 495M  228K  495M   1% /dev/shm
/dev/sda1             291M   33M  243M  12% /boot
/dev/mapper/VolGroup00-LogVol00
                       50G  180M   47G   1% /mnt/tmp

 

ちゃんと見えていて安心。次に以外の必要なファイルをすべてコピーする。

 

# cp -ar /{bin,boot,etc,home,lib,lib64,media,opt,root,sbin,tmp,usr,var} /mnt/tmp

 

/etc/fstabの設定

 

# cat /etc/fstab

#UUID=69c71470-4a68-4025-966a-b8f3d4a3b9eb /                       ext4    defaults        1 1
/dev/mapper/VolGroup00-LogVol00 /                       ext4    defaults        1 1
#UUID=1ae03bfe-24f1-44c0-8965-7bf826dc18a5 /boot                   ext4    defaults        1 2
UUID=7d385f93-aeb8-4773-86c9-51cb4aacfcde swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

 

既存の自動マウント設定を消去して新しいLVM設定を投入して再起動。ちと怖いが無事起動した。

 

[参考]

 

CentOS 6 で作るネットワークサーバ構築ガイド

http://www.amazon.co.jp/%E6%9C%AC/dp/4798032484

 

@IT : VMwareの仮想ディスクを拡大するには

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/740bigvmdisk.html

 

VMWareでハードディスク増設

http://server-setting.info/centos/vmware_disk.html

 

trac on Ubuntu 10.04

tracの構築

自宅のubuntu10.04にtracを構築した時のメモ

 

導入サーバのバージョンなど

 

手順

1.インストール

適当...

# sudo apt-get install apache2

# sudo apt-get install libapache2-mod-python

# sudo apt-get install trac

# sudo apt-get install subversion

 

2. svn設定

svnリポジトリを/var/svn

# mkdir /var/svn

# svnadmin create /var/svn/repo

 

3.trac初期設定

tracフォルダを/var/tracに (後で後悔した。/var/trac/projects/mytracにすればよかった。)

# trac-admin /var/trac initenv

svnは該当ディレクトリに。DBはsqliteのままでいいや。

 

フォルダの権限を変更

# chown -R www-data:www-data /var/trac

 

4.apache設定

sites-available/tracを作成して以下を記入

<Location /trac>
  SetHandler mod_python
  PythonHandler trac.web.modpython_frontend
  PythonInterpreter main
  PythonOption TracEnv /var/trac
  PythonOption TracUriRoot /trac
  SetEnv PYTHON_EGG_CACHE /tmp
</Location>
<Location "/trac/login">
        AuthType Digest
        AuthName "trac"
        AuthUserFile /var/trac/.htpasswd
        Require valid-user
</location>

tracを使うように変更

# a2ensite trac

パスワードはhtdigest -cコマンドで作る。アクセスは特に設定しないことにする。

その後apache再起動。

 

5. webから参照

http://localhost/trac

 

めでたしめでたし。

次はsvn連携とかやるか。

 

 

HDFS-2427

webhdfs mkdirs api call creates path with 777 permission, we should default it to 755

 

webHDFSのAPIで新しくディレクトリを作った場合の権限が777がデフォルトであるが、デフォルトは755であるべきである。という話。

 

パッチでは以下の多数のパラメータ値を変更している。

 

AccessTimeParam
LengthParam
ModificationTimeParam
OffsetParam
BufferSizeParam
BlockSizeParam
PermissionParam



他にも、パラメータの範囲チェッカーの追加、Long->Stringパーザへのtry文の追加、
などパラメータに関する小さな変更を加えている。

参考:https://issues.apache.org/jira/browse/HDFS-2427

hadoop-7740

security audit logger is not on by default, fix the log4j properties to enable the logger

 

 

security audit loggerではなくlog4jを使おうという話。

パッチではhadoop起動コマンド、hadoop-env.sh、log4j.propertiesなどの記述を変更している。以下、hadoop-env.shの例。

-HADOOP_JOBTRACKER_OPTS="-Dsecurity.audit.logger=INFO,DRFAS -Dmapred.audit.logger=INFO,MRAUDIT -Dhadoop.mapreduce.jobsummary.logger=INFO,JSA $HADOOP_JOBTRACKER_OPTS"
+HADOOP_JOBTRACKER_OPTS="-Dhadoop.security.logger=INFO,DRFAS -Dmapred.audit.logger=INFO,MRAUDIT -Dhadoop.mapreduce.jobsummary.logger=INFO,JSA $HADOOP_JOBTRACKER_OPTS"

 

参考:https://issues.apache.org/jira/browse/HADOOP-7740