ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

LINEの法則

2012-08-31 15:08:57 | Weblog
ここ

「LINE」、SNS参入の理由 フェイスブック追撃へ
http://www.nikkei.com/article/DGXZZO45535450Z20C12A8000000/?df=4

に出てくる(以下太字は、上記記事からの引用)


「いつも通りといえば、いつも通りなのですが、タイムラインも非ネット系の初心者層を起点に成長していくでしょう。非IT系からIT系へ。LINE自体がそうだったように、この普及の順番はLINEの法則なのかもしれません」


あ~たしかに、そうかもしれない。

IT系(いや、はっきり言うとSIer)がさわぐ、

   クラウドやビッグデータ

は、いまいちだけど、非IT系の

    はちゅねみく

は、とうとう、「情報処理」の学会誌の表紙になったもんなあ・・・

ってことはなにかい?

「情報処理」54巻表紙デザイン募集してるけど、
そのうち、非IT系から火がついたAKB48が、情報処理の表紙に
・・・ならないって(^^;)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HBaseを読む(9)設定

2012-08-30 14:06:52 | AI・BigData
NHNカンファレンスでもらったHBaseの本を、ざっと斜め読みして、適当にまとめるシリーズ「HBaseを読む」の続きです。

ちゃんとした情報を知りたい人は、HBaseの本を見てください。

今回は2.6から




■2.6 設定
・HBaseの設定
  confディレクトリにあるファイル群
  XML形式かフラットファイル
  環境変数 conf/hbase-env.sh
     主にクラスタの起動・停止
  conf/hbase-site.xml
  分散モード→confディレクトリの内容をクラスタ内の全ノードへ

2.6.1 hbase-site.xmlとhbase-default.xml
・サイト固有のカスタマイズはconf/hbase-site.xml
   hbase-default.xmlには全ての設定があるわけではない
   ほとんど変更することのない設定を見つける方法:ソース読む
・まず、hbase-default.xmlを読み、その内容をhbase-site.xmlとマージ
 (hbase-site.xmlが優先される)

2.6.2 hbase-env.sh
・HBaseの環境設定は、このファイルに設定

2.6.3 regionserver
・既存のリージョンサーバー名
 フラットなテキストファイル

2.6.4 log4j-properties
・ログファイルのローリングの頻度、ログメッセージのレベルなどの変更


2.6.5 設定のサンプル
・2.6.5.1 hbase-site.xml
 基本的な設定プロパティ
 クラスタの設定が定義
・2.6.5.2 regionserver
 リージョンサーバーが動作するノードのリスト
・2.6.5.3 hbase-env.sh
・これらのファイルを編集した場合は、クラスタ中の全サーバーに
 それらのファイルを配布
   →rsyncコマンドを使う

※コラム:HDFS関連の設定
以下のいずれかを行うまで、HBaseからHDFSの設定は見えない
・hbase-env.shのHBASE_CLASSPATHにHADOOP_CONF_DIR追加
・HBASE_HOME/confの下に、hdfs-site.xmlをコピーあるいはリンク
・hbase-site.xmlに直接書く
Hadoopの設定ファイルをHBase似追加する場合、それらの優先順位は
常に最も低い

2.6.6 クライアントの設定
・マスターは物理マシンを渡り歩くことがある
  →ZooKeeperに必須の情報を要求
  →Javaのクラスパス内にあるhbase-site.xmlに
   Zookeeperのクオラム情報必要

・HBASEのクライアントを実行するように設定する場合
  conf/ディレクトリをクラスパスに

・HBaseに接続する際に、Javaのクライアントは最低でも
 hbase,hadoop-core,zookeeper,log4j,commons-logging,commons-lang
 のJarファイルがクラスパス指定されていないといけない
・理想としては、これらのJarは他から持ってくるのでなく、
 提供されているものを使う
  →マイナーリリースの違いでも、問題を引き起こすかも?




次回は2.7章から

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HBaseを読む(8)動作モード

2012-08-29 18:47:36 | AI・BigData
NHNカンファレンスでもらったHBaseの本を、ざっと斜め読みして、適当にまとめるシリーズ「HBaseを読む」の続きです。

ちゃんとした情報を知りたい人は、HBaseの本を見てください。

今回は2.3から




■2.3 HBaseのためのファイルシステム
・HBaseで最も使われているファイルシステムはHDFS
・HBaseで使っているファイルシステムはプラガブルなアーキテクチャ
   使えるファイルシステムがHDFSに限定されるわけではない
   これほど使われる理由:以下の特徴が組み込まれている
     レプリケーション、フォールトトレランス、スケーラビリティ
     →別のファイルシステムでも、同様の保証必要
・ファイルシステム
  Local:スタンドアロンモードで利用
  HDFS:分散クラスタのとき
  S3:rawモードとネイティブモード
  cloudStore

■2.4 インストールの選択肢
・サーバに載せる:いくつかの選択肢
   Apacheのバイナリリリース
   ソースからのビルド:Mavenを使う

■2.5 動作モード
2.5.1 スタンドアロンモード
  デフォルトの動作モード
  ローカルのファイルシステム使う

2.5.2 分散モード
 ・擬似分散モードと完全分散モードがある
   擬似分散モード
     単一ホストで実行される分散モード
     テスト、プロトタイプで使う
     conf/hbase-site.xmlを編集

   完全分散モード
     2つ以上のホストを使う
     以下の修正

      hbase-site.xml
        hbase.cluster.distributedをtrue
        hbase.rootdir

      リージョンサーバーの指定
        conf/regionservers

      ZooKeeperのセットアップ
        HBaseにZooKeeperの管理させる?
          conf/hbase-env.shのHBASE_MANAGES_ZK
         →zoo.cfg,conf/hbase-site.xmlで指定

        既存のZookeeperアンサンブルの利用

※コラム:zoo.cfgとhbase-site.xml
  zoo.cfgがある場合、
    hbase.zookeeper.quorum
    hbase.zookeeper.property.*
     →zoo.cfgの値が上書きされる
    zookeeper.*
     →hbase-site.xmlのみが参照

※コラム:いくつのZookeeperを走らせたらいいでしょうか?
  多いほど、ホスト障害に対する耐性は強まる
  奇数にしましょう(多数決で決めるため)




次回は、2.6から


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

タブと、window.openを使わないウィンドウっぽいもののサンプル

2012-08-29 14:07:02 | JavaとWeb
こんなかんじ

で、タブによって、中身を切り替えたり

そこの詳細ボタンをクリックすると、こんなふうに

サイトの中身などを表示し、「閉じる」ボタンをクリックすると
元に戻るというJavascriptを書いたので、メモメモ。

そこに出ている「参考サイト」を参考に書きました。

<HTML>
<HEAD>
<TITLE>JavaScript サンプル</TITLE>
</HEAD>

<script src="http://www.google.com/jsapi"></script>
<script>
  google.load("jquery", "1.3.2");
  google.load("jqueryui", "1.7.1");
</script>

<SCRIPT type="text/JavaScript">
<!--

//---------ウィンドウ表示-------------------------------------------------------
//--------------------------------------//
//	サーバーからデータとって来る	//
//--------------------------------------//
function test(no)
{

	//	今はNOにかかわらず、同じところに飛んでいる

	$(function(){
		var httpObj = jQuery.get("http://archiva.jp/web/javascript/tab-menu.html",null, function(){
			test2(httpObj.responseText,no);
		});
	});

}

//--------------------------------------//
//	データをセット・ウィンドウ出力	//
//--------------------------------------//
function test2(msg,no)
{
  ID2.innerHTML = "no="+no+"<BUTTON onclick='ctest()'>閉じる</BUTTON><BR>"+msg;


  ID2.style.left = 30;
  ID2.style.top =  50;

  ID2.style.visibility = "visible";
  ID2.style.backgroundColor =  "yellow";

}

//--------------------------------------//
//	ウィンドウ終了			//
//--------------------------------------//
function ctest()
{
  ID2.style.visibility = "hidden";
}

//---------タブ切り替え-------------------------------------------------------
//--------------------------------------//
//	タブの切り替え			//
//--------------------------------------//
function mytab(no)
{
	switch(no)
	{
	case	1:
		naiyou.innerHTML = "1ページめ <BUTTON onclick='test(1)'>詳細</BUTTON>";
		tab1.style.backgroundColor =  "yellow";
		tab2.style.backgroundColor =  "white";
		tab3.style.backgroundColor =  "white";
		break;
	case	2:
		naiyou.innerHTML = "2ページめ <BUTTON onclick='test(2)'>詳細</BUTTON>";
		tab2.style.backgroundColor =  "yellow";
		tab1.style.backgroundColor =  "white";
		tab3.style.backgroundColor =  "white";
		break;
	case	3:
		naiyou.innerHTML = "3ページめ<BUTTON onclick='test(3)'>詳細</BUTTON>";
		tab3.style.backgroundColor =  "yellow";
		tab2.style.backgroundColor =  "white";
		tab1.style.backgroundColor =  "white";
		break;
	}
}

//-->
</SCRIPT>
<style type="text/css">
#ID3 {
	width: 500;
	height:300;
	position:relative;
}

#tab {
	left: 0;
	top: 0;
	margin-left: 0;
	padding-left: 0;
	margin-bottom: 1em;
	border-bottom: 2px solid gray;
	height: 30;
	overflow: hidden;
	position:absolute;
}
#tab li {
	float: left;
	padding-top: 5;
	width: 100px;
	height: 30;
	border: 2px solid gray;
}
#naiyou {
	left: 0;
	top: 30;
	width:500;
	height:270;
	border: 2px solid gray;
	position:absolute;
	background-color:"#FFFFDD";
}

</style>

<BODY id="ID1" bgcolor="#FFCCAA" onload="mytab(1)">
<H1>タブとウィンドウのサンプル</H1>
以下のとおり<BR>
<div id=ID3 >
<ul id="tab">
<li id="tab1" onclick="mytab(1)"><CENTER>1ページ</CENTER></li>
<li id="tab2" onclick="mytab(2)"><CENTER>2ページ</CENTER></li>
<li id="tab3" onclick="mytab(3)"><CENTER>3ページ</CENTER></li>
</ul>
<DIV id="naiyou"></DIV>
</div>

<div id="ID2" STYLE="visibility: hidden; position: absolute;"></div>

参考サイト<BR>
http://archiva.jp/web/javascript/tab-menu.html<BR>
http://www.24w.jp/study_contents.php?bid=javascript&iid=javascript&sid=effect&cid=001<BR>
http://www.ideaxidea.com/archives/2009/03/jquery_on_google.html<BR>
http://javascript.eweb-design.com/1003_puh.html<BR>
http://www.openspc2.org/JavaScript/Ajax/jQuery_study/ver1.2.1/chapter05/002/index.html<BR>
<BR>
</BODY>
</HTML> 
 


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HBaseを読む(7)必要な条件:ソフトウェア

2012-08-28 16:20:28 | AI・BigData
NHNカンファレンスでもらったHBaseの本を、ざっと斜め読みして、適当にまとめるシリーズ「HBaseを読む」の続きです。

ちゃんとした情報を知りたい人は、HBaseの本を見てください。

今回は2.2.2から





2.2.2 ソフトウェア

2.2.2.1 オペレーティングシステム
 ここ2~3年で言えば、HBaseはLinux上で使われるのが好まれた
 HBaseクラスタの基盤としてよく使われているOS
  CentOS
  Fedora
  Debian
  Ubuntu
  Solaris
  Red Hat Enterprise Linux
 ユーザーにとって快適で、既存のインフラに適合するものを選ぶ


2.2.2.2 ファイルシステム
 利用されている一般的なファイルシステム
  
  ext3
   最終アクセス時刻処理を無効にするとパフォーマンス向上
   呼びブロック数を減らす→tune2fs -m 1 デバイス名
  ext4
  XFS
  ZFS

 既存のインフラに適合するものを選ぶ

2.2.2.3 Java
 バージョン1.6以上
 パスが見つからない場合
   conf/hbase-env.shのJAVA_HOMEの値を修正

2.2.2.4 Hadoop
 特定のバージョンとだけ動作する
  →リモートプロシージャコールに関係
 Hadoopをビルドしたくない場合、
  パッチ適用済みのディストリを使う
  clouderaのCDH3
 バージョンをあわせることが「きわめて重要」
 ミスマッチの場合
   エラーを返さず、固まったまま

2.2.2.5 SSH
 リモートのデーモン管理に使う
  sshがインストール、sshdが動作している
  OpenSSH
  ローカルノードを含む全てのノードで
   パスワードなしでSSHが動く必要
   →公開鍵のペア必要
    パスフレーズも追加してください

2.2.2.6 ドメインネームサービス
 DNSの正引きと逆引き、どちらも動作していること
 正引きは、以下のコマンドで確認できる
   ping -c 1 ホスト名
 複数のインターフェース
   hbase.regionserver.dns.interfaceを設定
 別のネームサーバー
   hbase.regionserver.dns.nameserverを設定

2.2.2.7 時刻の同期
 クラスタノードのクロック:基本的に一致していること
   →クラスタでNTPを動作等
   怪しい振る舞いを見たら、システムの時刻を確認

2.2.2.8 ファイルハンドラとプロセスの制御
 ulimit -nのデフォルトは1024:不十分。
 I/Oエラーになる
 10000以上にする
 /etc/security/limits.confファイルのnprocの値
  調節するのも考えるべきかも

※コラム ubuntuでのファイルハンドラーの設定
 /etc/security/limits.confに以下の行追加
hadoop - nofile 32768

hadoopは、HadoopとHBaseを実行しているユーザーに置き換え

 /etc/pam.d/common-sessionに以下の行をファイルの最後に追加
session required pam_limits.so

2.2.2.9 データノードのハンドラ
 Hadoopのconf/hdfs-site.xmlの
 xcievers(スペルが間違っている)の値
 最低でも4096
   この設定をしておかないとおかしな生涯

2.2.2.10 スワップの多発
 よくない
 /etc/sysctl.confに以下の行を追加すると起こりにくくなる
vm.swappiness=5

2.2.2.11 Windows
 お勧めできません




次回から2.3


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

採用難・・・ですよね・・・

2012-08-28 13:18:08 | Weblog
このブログはコメントを受け付けていない。だから炎上しない。
なので、好き勝手なことを言わせてもらおう。

就職難じゃなくって、今って、採用難ですよね。
採用するほうが、思うとおりに取れない。
いや、大手は取れているの「かも」しれない(これはわからん)
でも、中小は、採用難だと思う。

その理由が、このニュースで判った気がする・・

<学校基本調査>大卒者の23% 安定した仕事に就けず
http://headlines.yahoo.co.jp/hl?a=20120827-00000101-mai-soci


この23%には、トリックがある。
大卒者のうち、非正規や、一時的(いわゆるフリーター)なのは、
3.5+3.9=7~8%、
昔も、このくらいのフリーターは、居たんじゃないか?
10人に1人くらい、フリーターっていうのは、おかしな話じゃない気がする・・

問題は、のこりの15.5%の、「進学も就職もしていない」
これ、昔と比べて多い気がする。
むかしも、「家事手伝い」という人はいたけど。。
専業主婦同様、結構昔の話で、最近は女性も就職していたような気がする
男性で「家事手伝い」は、いなかったよね。

そして、進学も、多くなっている。

つまり、就職する人が、少なくなってきているんじゃないか・・・?




この数字は、さらに注意が必要。

あくまでも、「大卒者」を考えている。
しかし、最近は、昔と違って、就職しないで大学留年、中退というのもいる。

もちろん、就職活動をして、就職できず留年するという人も居る。
だが、最近は、大学中に引きこもりになってしまい、そのまま留年あるいは中退という人もいるだろう。

それについては、

私大生の8人に1人が中退者になっていた!?
大学から生まれる“格差社会ニッポン”の恐るべき実態
NPO法人NEWVERY山本繁理事長×ネットイヤーグループ石黒不二代社長【前編】
http://diamond.jp/articles/-/23780?page=4


によると、こんなかんじ(以下太字は、上記サイトより引用)


 日本の大学の現状を、「もし大学が100人の村だったら」と仮定して、ストレーターの数を計算しました。ストレーターとは、大学を4年で卒業して就職し、3年以上会社に勤めている人で、私たちの調査では31%くらいです。一方、中退は12人、留年13人、フリーターや無職は15人、大学院・専門学校進学は15人、離職は14人となりました。


中退、留年は多いのだ・・・




結局、いいところに就職しようとして、できなかったら、あきらめて、就職しなかったり、留年したり、大学院・専門学校に行ったりという人が多い。結果として、中小企業までは受けてくれず、中小企業は、採用難となっているし、今後もこの傾向は強まるんじゃないか?

P.S 大企業の採用難の理由は違うかもしれない。内定を多く取る人が、内定取り消しを引き伸ばすため、就活期間終了後に、大量の取り消し者が出て、採用枠を満たせない感じかも・・・



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HBaseを読む(6)クイックスタートガイド・必要な条件

2012-08-27 22:04:10 | AI・BigData

NHNカンファレンスでもらったHBaseの本を、ざっと斜め読みして、適当にまとめるシリーズ「HBaseを読む」の続きです。

ちゃんとした情報を知りたい人は、HBaseの本を見てください。

今回から2章。2.1から
今回から、手抜きしていきます。




2章 インストール

■2.1 クイックスタートガイド

・HBaseの動かしかた
  HBaseの最新のリリースをダウンロード
  適当なディレクトリに展開

  cd /usr/local
  tar -zxvf hbase-x.y.z.tar.gz

 インタラクティブシェルを使って、プロンプトにstatusコマンド

  cd /usr/local/hbase-0.91-SNAPSHOT
  bin/start-hbase.sh
  bin/hbase/shell
  status

 ここで実行しているのは、スタンドアロンモード
 デフォルトではすべてのファイルは/tmpに保存

 簡単なテーブルを作成し、データを持つ行追加

  create 'testtable','colfam1'
  list 'testtable'
  put 'testtable','myrow-1','colfam1:q1','value-1'
  put 'testtable','myrow-2','colfam1:q2','value-2'
  put 'testtable','myrow-3','colfam1:q3','value-3'

 追加したデータが取り出せるか確認

  scan 'testtable'

 1行だけ取り出したい

  get 'testtable','myrow-1'

 値の削除
  delete 'testtable','myrow-2','colfam1:q2'

 後片付け:テーブルを利用できなくさせて削除
  disable 'testtable'
  drop 'testtable'

 シェルを終了、コマンドラインに
  exit

 HBase停止

  bin/stop-hbase.sh

※コラム:データディレクトリの設定
 設定ファイルconf/hbase-site.xmlのhbase.rootdir に
 書き込みたいディレクトリを指定
 デフォルトは/tmp/hbase-ユーザー名




■2.2 必要な条件

・2.2.1 ハードウェア
  コモデティハードウェア=サーバー級のマシン

・2.2.1.1 サーバー

<<CPU>>
 推奨スペック
   マスター クワッドコアCPUX2 2.0-2.5GHz
   スレーブ クワッドコアCPUX2 2.0-2.5GHz

<<メモリ>>
 必要量
   マスター 24GB
   スレーブ 24GB以上

<<ディスク>>
 推奨構成
   マスター 4X1TB SATA RAID 0+1
   スレーブ 6X1TB SATA JBOD

※コラム RAIDあるいはJBOD
  スレーブではRAIDを使うべきではない→JBODを使う
  マスターでは、RAID 0+1あるいは1+0
  どちらもディスクはファームウェアベースのRAID

<<筐体>>
 推奨構成
  マスター ギガビットイーサ、デュアルPSU、1Uあるいは2U
  スレーブ ギガビットイーサ、シングルPSU、1Uあるいは2U
  

2.2.1.2 ネットワーク

 ・トラフィックの分散はToRスイッチ
 ・集約はCaS(コアアグリゲーションスイッチ)
 ・必要最小限のポートだけ空けておく
 




次回は、2.2.2から

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

自動化とシミュレーションがAgileを加速する?

2012-08-27 13:33:31 | トピックス
A HREF="http://blog.goo.ne.jp/xmldtp/e/3f29d735a60f9fb0143aa1e4e8e965ac">モデルベース技術開発セミナーの最後の質問に、「モデルベースが利用されるところ」として、シミュレーションと自動化という話があったけど、これが加速されると、開発は、アジャイルに移行していくのでしょうね。




 むかしは、Railsがなかったし、フレームワークもフルスタックでなかったので、結構開発しないといけない部分があった。
 いや、今でも、Railsをそのままつかうんじゃあ・・・っていう部分もあるし、開発しないといけない部分も多いんだけど、
 ユーザー(発注者側)が、「いや、ここは、がんばんなくていい」と決めてしまえば、Railsでつくったものをそのまま利用してもいい部分もでてきた。
 つまり、今は、自動化されてきて、ユーザーの判断次第では、ソースを作らなくてもいい部分が増えてきた。

 一方、ユーザーもどうしたらいいかわからないところは、仕様が決められない。そういうところに対しては、シミュレーションができるようになってきた。将来的には、シミュレーションしてみて、仕様をきめることになるだろう。




 そうなってくると、自動化とシミュレーションによって、ユーザーといろいろ決めながら開発するということが可能になってきて、アジャイルっぽい開発の方向に向かっていくのであろう。

 ユーザーが、仕様を決めることができるのであれば、ウォーターフォールは現実的だけど、そのように仕様が決められる部分は、海外で開発してもらったほうが安上がりなので、そういう仕事は、日本に残りにくい。
 日本に残る仕事は、ユーザーが仕様がわからず、仕様を決める必要がある部分で、まさに、アジャイルでの開発が向いている部分だと思う。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HBaseを読む(5)ストレージAPI,HFileなど

2012-08-26 12:08:02 | AI・BigData
NHNカンファレンスでもらったHBaseの本を、ざっと斜め読みして、適当にまとめるシリーズ「HBaseを読む」の続きです。

ちゃんとした情報を知りたい人は、HBaseの本を見てください。

今回は、1.4章後半と1.5章




1.4.4 ストレージAPI

 ストレージAPI
   テーブルや列ファミリの生成/削除
   テーブルや列ファミリのメタデータの変更
     →圧縮、ブロックサイズ
   値の生成や削除
   行キーに対する値の取得

 スキャンAPI
   指定した範囲の行に対する繰り返し処理を効率的に
   セルのバージョン数制限
   フィルターを使って列をマッチ
   特定の期間内のバージョンを得られる
     →開始時間と終了時間を指定して

 より高度な機能
   単一行に対するトランザクション
   単一の行キーの下で保存されているデータに対する
     読み出し-変更-書き込みの
     アトミックなシーケンス
   セルの値:アトミックに更新できる
     カウンターとして解釈
   クライアントから提供したコードをサーバーで実行
     コプロセッサ
     軽量なバッチジョブの実装
     様々な演算子に基づくデータの解釈や集約
     バージョン0.91からHBaseへ

 MapReduceフレームワークと結合されている
 アクセスは、クライアント側のAPIを通じて、純粋に命令的に行われる


1.4.5 実装

HFile:データ保存用のファイル群
  キーと値からなる永続化された順序つきの
    イミュータブルなMap
  内部的にはブロックの並び
  ブロックのインデックスが末尾に保存
  デフォルトのブロックサイズは64K
  APIを提供
    特定の値にアクセスするAPIや
    指定された開始及び終了キーの範囲内にある値をスキャンするAPI

 すべてのHFileにはブロックインデックスがある
   →ルックアップを行うのに必要なシークは1回だけ
 保存用のファイル:通常HDFSに保存
 更新されたデータ
   コミットログに書き込まれる
     →HBaseではこのログをライトアヘッドログ(WAL)と呼ぶ
   メモリ内のmemstoreに保存され
   最大値を超えると、HFileとしてディスク書き出し
     →memstoreは交代制
       新しいmemstore:更新受付
       古いmemstore:ファイルに変換
   memstore内のデータは、キーでソート済み

 ローカリティの性質
   関連しあうデータを一緒に纏めておくには、キーを指定しないといけない

 保存用のファイル
   イミュータブル
   削除:削除マーカー(墓石マーカー)が書かれる
   データを読み出しなおす:memstoreの保存内容のマージ
       WALは使われない(サーバークラッシュのとき使う)

 コンパクション
   memstoreのディスク書き出し→多量のHFile→1つのファイルにする
   2種類
     マイナーコンパクション
     メジャーコンパクション
   メジャーコンパクション
     すべのキー、値ペアがスキャン
     削除エントリを削除マーカー含め消去
       predicate deletes処理

 このアーキテクチャ:LMSツリーから
   バックグラウンドで実行されるコンパクション
     →LMSツリーのマージ

HBaseの構成
  クライアントライブラリ
  1つのマスターサーバー
  多くのリージョンサーバー

 マスターサーバー
   リージョンの割当に責任
   高い信頼性と可用性
     →永続化分散強調サービスのApache ZooKeeper利用
   リージョンのロードバランシングの調整
   クラスタの状態管理
   メタデータの処理:
     →スキーマ変更、テーブル・列ファミリの生成

 リージョンサーバー
   リージョンに対する読み書きリクエスト
   リージョンの分割

コラム:Apache ZooKeeper
 GoogleのChubbyに相当
 所有権の調停、サービスの登録、更新の監視
 リージョンサーバー:一時ノードを作成
 マスターサーバー:利用可能なサーバの検索
 HBaseでは、以下の目的にも利用
   動作中のマスターが1つしなかい確認
   開始地点の保存
   リージョンサーバーの登録


1.4.6 まとめ

Bigdataのストレージアーキテクチャ:ペタバイト級までスケール
列指向のアーキテクチャ→HBaseの強力な一貫性
マルチバージョニング




1.5 HBase:Hadoopデータベース

1.5.1 歴史

2006年11月 Bigtableの論文
2007年 2月 HBaseの初期プロトタイプ
2011年 1月 HBase0.90.0リリース
2011年 中頃 0.92.0リリース

HBaseの開発者たち:Hadoopと歩調を合わせるのをやめた
  →0.20.xから0.89.xという明らかなジャンプ

1.5.2 用語

HBaseとBigtableでことなる
 ・リージョン(tablet)、
  マイナーコンパクション・フラッシュ
  ライトアヘッドログ(コミットログ)
  Memstore(memtable)
  HFile(SSTable)
  Zookeeper(Chubby)
    など


1.5.3 まとめ

HBase
・一貫性をもつ永続的ストレージシステム
・列ファミリ:圧縮
・柔軟なセカンダリインデックス
・Push-down predication
・行のアトミック性と読み出し-修正-書き込み
・スケーラビリティははじめから考慮
・バランス取り直し、シャード:自動化




来週から2章。
2章以降は、もっと手を抜いていきます。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

【速報】米アップルvs.サムスン裁判はアップル大勝利、サムスンに損害賠償828億円

2012-08-25 12:10:07 | トピックス
ここのエントリ

【速報】米アップルvs.サムスン裁判はアップル大勝利、サムスンに損害賠償828億円
http://www.gizmodo.jp/2012/08/vs_13.html

によると(以下太字は上記サイトより引用)

米国のアップルvs.サムスン特許裁判の陪審員判決が先ほど下りました。結果はアップル側の主張がおおむね認められたかたちで、サムスンにはアップルに損害賠償金として10億ドル(1,051,855,000ドル=828億円)の支払い命令が下りました。

とのこと

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

モデルベース技術開発セミナー

2012-08-24 20:58:06 | トピックス
モデルベース技術開発セミナー」を聞いてきたのでメモメモ




モデルベースシステムズエンジニアリングと
SysML システムモデリング言語

・モデルベースシステムズエンジニアリングとは
・SysMLによる機能要求分析
・事例紹介:2厘自動車に対する操舵アシスト制御システムデザイン
・まとめ

■モデルベースシステムズエンジニアリング
・DualVee(2元V字)開発モデル
・エンティティV
・アーキテクチャの3つの視点とは
・要求定義と検証・妥当性確認の位置づけ


システムズエンジニアリング
 システムを成功裏に実現するための複数の分野にまたがるアプローチ・手段

・ニーズを明確化
 機能要求定義
 関連する問題考慮
 設計のための総合
 システムの妥当性確認

・モデルに基づくシステムズエンジニアリングの必要性
 図的に表現する
 協働してシステム開発→共通言語
 モデルの再利用

・SysML
 有力な図的表現方式として注目
 複雑なシステムを構造、振る舞い、要求、パラメトリック制約の面から
 図的に表現できる


■2元V字開発モデル(Dual Vee Model)
・アーキテクチャの分解と統合のV
・システム、サブシステム、コンポーネントを縦方向
  →手前に出ているVがエンティティV

■エンティティV
・システムレベル、サブシステム。コンポーネントでも

■2つの鉄則、3つの視点
・要求の2つの鉄則
  測定可能で
  テスト可能
・どのように実現するかの前に
  それは何か
  なぜそれが必要かを明確にする

・アーキテクチャの3つの視点
  オペレーション
  機能
  物理
→SysMLは、上流から使える
→MATLAB/Simulinkはファンクショナル
  →SYSMLからも
→CAD:物理
  →「きゃてぃあ」は上流から

SysML
 振る舞い
   ユースケース図
   シーケンス図
   アクティビティ図
   状態遷移図
 要求図
 構造図
   ブロック定義図
   パラメトリック図
   内部ブロック
   パッケージ図

4つのピラー
  構造
  要求
  振る舞い
  パラメトリック:数式表現


エレベーターに対する要求の話
  ユースケース
  シーケンス図
  機能分析
  階層的なユースケース分析

■システム分析の考えかた
  機能→サブシステムへ

■テストケースの計画と管理
  ユースケースを考えた:ユースケースシナリオ
  HILS/SILSが必要になってくる

■事例紹介:バイク

■まとめ
 ・パラメトリック図は、かけはし





An Example of Service Design and Simulation assisted by the SysML

・サービス設計のための方法論
 サービスサイエンス
  →サービスがサイエンスになりえる
  →サービスを設計する
 サービス工学
  →顧客満足の数値化(JCSI)

・日本版顧客満足指数(JCSI)
  顧客満足
  知覚品質
  顧客期待
  知覚価値
  クチコミ
  ロイヤリティ

・サービスとは
  コトラーの定義等
 サービスに関する定義
  サービス品質
  顧客価値
  サービスの生産性(まだはっきりしない)
  収益性
 サービスの特徴
  無形性
  同時性
  異質背
  消滅性

・サービス評価のためのシミュレーション
   JCSI
 サービスシステム設計支援
   統合モデリング言語SysMLを用いたモデリング

・認識論の方法としてのシステム
   因果関係
   世界を体系化

・システムの歴史
  一般システム理論
  サイバネティックス(ノバート・ウェーナー)
  情報理論

・アーキテクチャ:ザックマン
  機能:プロセス
  材料:データ
  構造:ネットワーク

・フィードバック制御
  ものとことの閉ループ回路
    手続き的世界 コト:人間が構築した手続き
    物理的世界  もの:物理法則

・連続時間 微分方程式・・・
 離散時間 ペトリネット・・・

・事例:HomeCotinuityPlan
   HCP

 



システム工学とソフトウェア工学のコラボレーション
およびOCSMPについて

・システム工学
   国により、世代により言葉が違う
   SEということば
   イメージ:船、ロケット、軍事

・ソフトウェア工学
   1960年代(そのまえは、CSの一部)
   システム工学の一部
   利用技術を持っている会社:生き残った
    例:小売の知識NCR
      →キャッシュレジスター
        ブレークスルーのはじまり
        客がお金をチェックする→小売システム

・システムのソフトウェア依存度が大きくなった

・人によってばらばらなモデリング

・モデリング
  実装から導入へ
    オブジェクト指向(分析設計)
       UML2.0 汎用モデリング言語
    モデルドリブン
       多層構造、UMLを想定していない
  内部から外部へ
    ビジネスモデル(日銭)→戦略
  アーキテクチャとドメインの問題
    エンタープライズアーキテクチャ
    ビジネスアーキテクチャ
    ドメインアーキテクチャ

・システムとソフトウェアのコラボ
  黎明期:規模の経済
  アポロ計画:ミッションクリティカル
  プロセスコントローラー
   補助的、非汎用的:いまだに動いている

  70年代:メインフレームの時代
   プロセスコントローラーの普及
   マイクロコンピューターの誕生

  80年代:マイクロコンピューターの時代
   システムエンジニアリングが影を潜める
   組み込み

  90年代:インターネット→通信分野へ
   ダウンサイジング
   シミュレーション技術の急発展
     バーチャルリアリティ

  2000年代:主役交代メーカーからユーザーへ
   コモディティ化
   バーティカル化(業界固有のアーキテクチャ)
   ビジネスモデリング
   グローバル化、一貫性、標準化
   モデリング技術の発展

モデリング技術の発展
・はじめ、数学を言語として数理モデル
・システムエンジニア:ソフトウェアに依存性が高くなった
・システムが複雑:特徴的
   原因結果は簡単な因果関係が増えてきた
     →因果関係の錯綜
  →SysML

・事例:SWFTS
  いままでの生産性では追いつかない
  UPDM

  効果
   コスト削減
   高度に複雑なシステムへの対応
   品質

・テストできないSWの品質
  80年代 Ada
    形式手法
    ブーチ手法
   →軍事:テストできない

  90年代:シミュレーション、VR
    バグがあっても安全なシステムへ

  2000年代
    シミュレーション:高品質、低価格
    SysML
    トレーサビリティ

・OCSMP
  OMGの試験
    モデルユーザー:情報提供者
    モデルビルダー:設計者
  ピアソンビュー、2万円台




■SMAのモデルベース開発に関する活動について

SMA
  モデルベース設計検証技術部会
    実例の収集と分析
  モデルベース技術者研修環境研究会
    スキルレベル向上の研修環境
  ETSS導入推進部会
  スキルの形式的評価手法開発部会
    スキル評価の客観性


ETSS
  技術
   経済的、再現可能、工程
   (経済性がないと工学)
   1対多可能、お金で買ってくる可能
   技術の方向(モチベーション)→革新的

 スキル
   与えられた技術、個人の作業能力
    まねすることのできない
    (見ることはできるが、まねできない)
   スキルの方向→保守的(個人の価値増大)

部会メンバーのMBD適用状況
・状態遷移図はみんな使っている
・SysML/UMLも使っている

・(質問に答えて)
モデルベースが利用されるところ
  →シミュレーション(特に命に関わるところ)
  →プログラムの自動生成

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HBaseを読む(4)構成要素

2012-08-23 18:48:08 | AI・BigData
NHNカンファレンスでもらったHBaseの本を、ざっと斜め読みして、適当にまとめるシリーズ「HBaseを読む」の続きです。

ちゃんとした情報を知りたい人は、HBaseの本を見てください。

今回は、1.4章前半




■1.4 構成要素
・HBaseのアーキテクチャ
   データモデル
   利用可能なストレージAPI
   高レベルから見た実装

1.4.1 背景
 2003 Google GFS
   スケーラブルな分散ファイルシステム
 そのすぐ後 Google MapReduce
   膨大な数のCPUを活用
   →まだかけているもの
      リアルタイムなランダムデータアクセス
      小さなファイルの扱い
      RDBMSとは異なるアプローチ
 2006 BigTable
   →究極的には、HBaseの設計の根拠
    HBaseはBigTableのストレージアーキテクチャ実装


1.4.2 テーブル、行、列、セル
・基本となる単位:列
・1つ以上の列で行が形成
   →行は行キーによってユニークに
   →行キーで常にソートされている
・複数の行はテーブルを構成
・列には複数のバージョンを持たせることができる
  それぞれのバージョンに、個別のセル:値を持たせられる
・HBaseはセカンドインデックスも持てる
・列は列ファミリーとしてグループ化
・すべての行と列は、テーブルに基づいて設計
・列の値、セルには、タイムスタンプ
  複数のバージョンを保存するのに使う
・バージョン数は指定できる

まとめると

(Table,RowKey,Family,Column,Timestamp)→value

・デフォルトでは、APIが提供するビューからは、一貫して各セルの
 最新の値が自動的に選ばれて見える

・行データへのアクセスはアトミック
  →複数の行、テーブルにまたがる保証やトランザクションはない
・タイムスタンプ→アプリケーション層の一貫性にもプラス

※コラム Webtable

・BigTable,Hbaseの正統的ユースケース:Webtable


1.4.3 自動シャーディング

・HBaseにおけるスケーラビリティ、ロードバランスの基本単位:リージョン
   →まとめて保存される連続した範囲の行
   →大きくなりすぎると自動的に分割
      →中間キーで2つに分割
   →リージョンは1つのリージョンサーバーで扱われる
      →1つのリージョンサーバーは多くのリージョン
・リージョン=レンジパーティション

・リージョンを分割して扱う:自動シャーディングと見なせる

・分割も高速




次回は1.4.4から

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

hadoopは、データウェアハウスとして取り扱うべきでしたよね!

2012-08-23 16:48:42 | AI・BigData
Hadoopを、SIerさんは、ビッグデータという、わけわからんものと結び付けてしまったせいで、
本来、Hadoopをいれて売り込める市場を、失ってしまったように思える。

データウェアハウスの市場は、たしかにあって、そこは、テラデータが主に取っていると思う。
Exadataが取って代わるかもしれないが
(単位の話をしているのではないですけど、まるで単位の話に聞こえる ^^;)

この市場を、Hadoop+HBaseなどのオープンソースを使い、さらに
さらに今後、HadoopベースのBIツールにより、安価にデータウェアハウスができる
というストーリーに持っていったほうが、

ビッグデータなどという胡散臭い?ものと結び付けるより

健全な市場が形成できたと思うんだけど、
どうなんだろう・・・



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

洗濯クラウド - パナソニック

2012-08-22 18:47:16 | Weblog

パナのスマホ家電の未来感がヤバイ! 外からスマホでエアコンオン
http://ascii.jp/elem/000/000/719/719239/

によると(以下太字は上記サイトより引用)


パナソニック(アプライアンスマーケティングジャパン)は21日、スマートフォンとの連動をウリにした「スマート家電」6製品を発表した。その6製品とはルームエアコン、トップユニット冷蔵庫、ドラム式洗濯乾燥機、体組成バランス計、活動量計、手くび血圧計。このすべてが、スマホのNFCやクラウドサービスと連動して操作することができる。


とのこと。たとえば、洗濯機は

9月25日に4モデルが発売されるドラム式洗濯乾燥機。NFCで洗濯機にタッチすることで、クラウドサーバー経由で洗剤や柔軟剤の量や衣類や汚れに合った選択コースを選んでくれる。予想価格は34~35万円前後


クラウドサーバー経緯で洗濯?
洗濯クラウド??


・・・洗剤や柔軟剤の量って、はじめから、洗濯機に組み込んじゃ、いけないもんなんでしょうか?

ま、それはさておき

迷走パナソニック、クラウドサーバー経由で洗剤や柔軟剤の量を調べてくれる洗濯機を発表!! 価格は35万円
http://news020.blog13.fc2.com/blog-entry-2619.html

のコメントにもあるけど、これ、クラウドが止まったら、どうなるんだろう?
洗濯できないの??


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

なぜフレームワークを使うのか?どうしてフレームワークが作れるのか?

2012-08-22 15:22:37 | トピックス
この話を新人にしたら、とても難しいらしい。
で、たぶん、今後はこの話を封印してしまうと思うので、
忘れないように自分用にメモメモ。




■なぜフレームワークを使うのか?

※ここでいうフレームワークは、strutsとかspringとかのWeb用の
 フレームワークをさしています。


 たとえば、ブラウザを使って、Web経由で会員登録するプログラムを考えます。
 1から作るとすると、

  ・ブラウザに表示する画面を作る
  ・ブラウザ<=>サーバー間送受信プログラムを作る
  ・サーバー側で会員データをDBに登録するプログラムを作る

 と、3種類のプログラムを作らなければいけません。

 ここで、ブラウザに表示する画面を作る人は、かっこいい画面を作りたいです。
 お客さんの要望に応じて、修正いっぱい入るかも!
 DBは、将来的に修正があるかもしれません。でも基本的にやることは変わらないかな・・
 ネットワーク通信部分は、そうそう変わらないです。

 このように、修正タイミングがちがいます。
 もし、1本のプログラムで書くとすると、大変です。画像修正+DB変更のたびに、
 修正しなきゃいけないです。

 さらに、必要な知識も違います。
 ネットワークの部分の知識は、画面作成者にはいらないかもしれません。




 ということで、これらの部分を分けて、

  ・ブラウザに表示する画面を作る
     ところは、修正が入っても他に影響させず

  ・ブラウザ<=>サーバー間送受信プログラムを作る
     は、難しいので知識がある人が作るけど
     修正はしないようにする

  ・サーバー側で会員データをDBに登録するプログラムを作る
     は、DB修正があっても、できるだけ、他に影響させないようにする

 というように、影響が他にでないように作りたい

 これを実現するのがフレームワークで、とくに、

  ・ブラウザに表示する画面を作る
  ・サーバー側で会員データをDBに登録するプログラムを作る

 部分は個人で作成するけど、

  ・ブラウザ<=>サーバー間送受信プログラムを作る

 部分は、手を出させなくさせたい。
 そこで、ここをフレームワークで作成(隠蔽)し、他の部分を
作ってもらうということになります。
 フレームワークから作った部分を呼び出します。
 これが、ハリウッドの法則(私を呼び出すな、必要なら私から呼び出す)
になってきます。




■どうしてフレームワークが作れるのか?

 したがって、フレームワークのしくみは、こんな感じになります。

(1)画面の表示内容をHTML+JavaScriptで記述、
 サーバー側にREST型(GETまたはPOST)でアクセスして
 入力内容をサーバーと通信する

(2)サーバー側で受け取ったら、
  受け取った内容をもとに、起動したいプログラムを起動する
    その際に、受け取った内容を引数として渡す
  プログラムから、表示したい内容を受け取る

(3)サーバーは、受け取った内容をもとに、表示する
   内容を受け取ってから、表示するまでには、いろいろ方法がある

 ここで、(1)、(3)は作れそうです。
 文字列を作るだけだから。
 問題は、(2)です。
 引数で受け取れるのは、文字列。
 起動するのは、クラスなど

 PHPやRubyならわかります。evalを使えば、文字列をプログラムと
見なして実行できます。
 Javaは?




■リフレクション

Class.forName(クラス名)を書くと、実行できます。
たとえば、以下のソースは、受け取った第一引数をクラスとして起動し、
第二引数以下を、その起動したクラスに渡します。

import java.util.*;

public class MyReflection {

	public static void main(String args[])
	{

		ArrayList<String> in = new ArrayList<String>();
		ArrayList<String> out = new ArrayList<String>();

		try {

			Class cl = Class.forName(args[0]);
			MyReflectionInterface my = (MyReflectionInterface)cl.newInstance();

			for(int i = 1 ; i < args.length ; i++)
			{
				in.add(args[i]);
			}

			my.execute(in, out);

		} catch (Exception e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}

		for(int i = 0 ; i < out.size() ; i++)
		{
			System.out.println(out.get(i));
		}


	}
}


たとえば、このクラスをコンパイルして実行し、引数を Class1 a b c とかにすると、
以下のクラスが見つかれば、じっこうしてくれるわけです。

import java.util.ArrayList;


public class Class1 implements MyReflectionInterface{

@Override
public int execute(ArrayList<String> in, ArrayList<String> out) {

for(int i = 0 ; i < in.size() ; i ++)
{
out.add(in.get(i));
}
return 0;
}

}

同様に引数を Class2 a b c とかにすると、Class2が見つかれば、じっこうしてくれるわけです。
同様に引数を Class3 a b c とかにすると、Class3が見つかれば、じっこうしてくれるわけです。

これらは、すべて、MyReflectionInterface

import java.util.ArrayList;


public class Class1 implements MyReflectionInterface{

@Override
public int execute(ArrayList<String> in, ArrayList<String> out) {

for(int i = 0 ; i < in.size() ; i ++)
{
out.add(in.get(i));
}
return 0;
}

}

を実装しているので、MyReflectionでmy.execute(in, out);と呼び出せるわけです。


この仕組みを使うと、
・(1)で受け取った引数などから、あらかじめ記述されている設定ファイル
 を見て、起動するクラスを決定する

・起動するクラスを文字列で受け取り、それを起動する

ということが実現できます。
Servletにおけるweb.xmlのurl-patternとservlet class,
struts-config.xmlにおけるaction-mappingなど、この関係に成っています

たとえば、servletの場合、web.xmlのurl-patternにもとづきservlet class
をうけとります。Tomcatのなかでは、上記のMyReflectionと同じ仕組み
があって、servlet classで指定されたクラスを実行するわけです。
 このとき、MyReflectionInterfaceに相当するものが、HttpServletになるわけです
(インターフェースじゃなくって、継承だけど)




ということで、つぎは、実際に流れるネットワークデータになるんだけど、
それについては、長くなるので、またこんど

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする