Mint 를 사용하다보면 오른쪽 상단에 있는 "(금) 17:09" 이렇게 시간이 쓰여져 있는 것을 보셨을 것입니다. 그것을 살짝 눌러보면 달력과 일정이 쭈르륵 나옵니다. 여기에 표시가 나오는 것을 보니 어딘가(?) 에서 설정해 주면 편하게 일정이 나올 것 같은 분위깁니다. 그래서 아래쪽에 있는 "달력 열기" 버튼을 클릭해 주면 에볼루션이 설치가 안되어 있다고 에러 메시지가 발생할 것입니다. 감히!! 데비안 패키지를 어떻게 보고!!

$ sudo apt-get install evolution


이러면 바로 설치가 됐을 것입니다. 그리고 아까와 같이 '달력 열기'를 클릭하면 에볼루션 (Evolution) 어플이 실행됩니다. 에볼루션에 관한 설정은 쉽게 알아볼 수가 있을테니 여기서 구글 캘린더랑 연동하는 법을 알아보기로 하겠습니다.

에볼루션에서 '새로 만들기' 옆에 있는 '아래로 향한 화살표'(보통 콤보 버튼이라고 합니다)   버튼을 클릭해서 '달력' 메뉴를 선택합니다. 그러면 다음과 같이 나오는데





'종류'를 '구글' 로 선택하시고 '사용자이름' 을 gmail 아이디로 적어 줍니다.

이렇게 하고 '적용' 하시면 동기화 끝입니다. 에볼루션에서 일정을 적어주면 바로 바로  오른쪽 상단 태스크바에 적용이 되며, 안드로이드 폰에도 바로 적용이 됩니다.

참고로 에볼루션 버젼은



입니다. 예전 버젼에서는 구글-캘린더가 읽기 전용으로만 동작했습니다.


저번 포스트 에서 Clojure 와 Emacs 와 Slime 을 연동 시키는 방법을 했다면, 이제 실제 클로져 코드를 짜야 하는 일이 생길 것입니다. 그런데 전역으로 환경을 세팅하는 것이 아니기 때문에 다른 클로져 라이브러리를 포함 시키는 것이 어려울 것 같습니다. 특히 clojure-contrib 같은 거의 필수 라이브러리는

lein 으로 만들어준 프로젝트의 project.clj 를 열어줍니다.

$ lein new test-project
$ cd test-project
$ emacs project.clj


다음 과 같이

                 [org.clojure/clojure-contrib "1.2.0"]


의 내용을 :dependencies 에 추가해 줍니다.


아래에 붙어 있는 congomongo 는 무시하세요.

$ lein deps


를 실행해 주면 clojure-contrib 를 다운 받아서 프로젝트 환경에 추가해 줍니다.
이제 Emacs 상에서 Clojure 랑 Slime 을 연동시켜서 원하는 코드를 만들어 주면 됩니다.

M-x clojure-jack-in


LVM 은 물리적 디스크들을 가상의 디스크로 합쳐서 관리할 수 있게 해주는 관리 툴입니다. 쉽게 말해서 실제로 하드디스크 3개가 있는데 이 하드를 하나인것처럼 관리할 수 있게 해줍니다. 예전에는 큰 하드 하나를 나눠서 쓰곤 했었는 데 요즘은 그냥 통째로 하나 쓰는게 제일 편합니다.

360 , 160, 80 기가의 하드디스크가 있다면(제 실제 상황이 그렇습니다) 이 세개를 묶어서 마치 한개의 600 기가 하드 디스크 한개  인것처럼 할용할 수 있게 해줍니다.

    /dev/sda = 80
    /dev/sdb = 160
    /dev/sdc = 360 (여기에 시스템이 설치되어 있슴)

/dev/sdc 에 이미 설치되어 있어서 변경하기는 귀찮고 또 새로 깔기 또한 귀찮으니까 /dev/sda 와   /dev/sdb 를 합쳐줄려고 생각합니다. (시스템이 설치되어 있으면 변경하는 게 무척 귀찮을 꺼 같더라고요)

설치는 간단합니다.

    $ sudo apt-get install lvm2


초 간단 용어정리

PV (Physical Volume) 물리적 볼륨
PE (Physical Extent) 물리적 범위 (?) 정도로 보시면 됩니다.

LVM 파티션들을 만들어 줍니다.

  
  $ sudo fdisk /dev/sda

    Command (m for help):  t
    Selected partition 1
    Hex code (type L to list codes): 8e
    Changed system type of partition 1 to 8e (Linux LVM)

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.

두번째 하드디스크도 LVM 으로 만들어 줍니다. 8e 가 LVM 파티션입니다.


 
   $ sudo fdisk /dev/sdb

    Command (m for help):  t
    Selected partition 1
    Hex code (type L to list codes): 8e
    Changed system type of partition 1 to 8e (Linux LVM)

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.

그리고, 파티션을 나누지 않고 하드디스크 전체를 PV로 만들려고 할 때에, 파티션 정보가 기록되어  있다면 PV로 만들어지지 않을 것이다. 파티션을 fdisk등으로 전부 지워도 마찬가지인데 해결 방법은  dd등의 명령으로 파티션 정보를 깨끗히 지워주면 된다. 예를 들면 다음과 같다.

    $ sudo dd if=/dev/zero of=/dev/sda bs=512 count=1
   
    1+0 레코드 들어옴
    1+0 레코드 나감
    512 바이트 (512 B) 복사됨, 0.00197004 초, 260 kB/초

/dev/sdb 도 같은 방식으로 처리해 줍니다.

    $ sudo dd if=/dev/zero of=/dev/sdb bs=512 count=1

    1+0 레코드 들어옴
    1+0 레코드 나감
    512 바이트 (512 B) 복사됨, 0.0187204 초, 27.3 kB/초

이제 PV 들을 생성해 줍니다.

    $ sudo pvcreate /dev/sda
    Physical volume "/dev/sda" successfully created

두번째 하드 디스크에도 PV 를 생성해 줍니다.

  
  $ sudo pvcreate /dev/sdb
    Physical volume "/dev/sdb" successfully created

이제 VG (Volume Group 입니다. LV 아닙니다) 를 만들어 줍니다.

    $ sudo vgcreate data_vg /dev/sda /dev/sdb
    Volume group "data_vg" successfully created

 이제 제대로 만들어 졌는지 확인해 보기로 합니다.

    $ sudo vgscan
    Reading all physical volumes.  This may take a while...
    Found volume group "data_vg" using metadata type lvm2

만들어 졌군요. 이제 활성화 시켜보겠습니다.

 
   $ sudo vgchange -a y
    0 logical volume(s) in volume group "data_vg" now active

확인해 봅니다.

  
  $ sudo vgdisplay

    --- Volume group ---
    VG Name               data_vg
    System ID            
    Format                lvm2
    Metadata Areas        2
    Metadata Sequence No  1
    VG Access             read/write
    VG Status             resizable
    MAX LV                0
    Cur LV                0
    Open LV               0
    Max PV                0
    Cur PV                2
    Act PV                2
    VG Size               223.57 GiB
    PE Size               4.00 MiB
    Total PE              57235
    Alloc PE / Size       0 / 0  
    Free  PE / Size       57235 / 223.57 GiB
    VG UUID               X7YuJy-lqY7-gwKQ-2DzZ-iaKe-adpY-eNVykk

vgdisplay 가 더 자세한 정보를 보여주는 군요. 180 기가랑 60 기가를 합쳐서 위에 나오는 수치가  됐군요. 설마 아직도 180 기가가 진짜 180 기가인지 아시는분 안계시겠지요? ㅎㅎ

이제야 모든 준비가 끝났습니다. LV (Logical Volume)를 생성할 시간입니다. VG 의 크기인 223 을  기억하시고

    -L 옵션은 크기 입니다. 저는 VG 크기의 223G 를 줄것입니다.
    -n 은 LV 의 이름입니다. 저는 data 라고 줄것입니다.

   
$ sudo lvcreate -L 223G -n data data_vg
     Logical volume "data" created

/dev/data_vg/data 라는 심볼릭 링크가 생긴것을 확인하실 수 있습니다. 자 이제 만들어진 LV 를 포맷하는 일만 남았습니다. ext4 를 쓰고 있으니까 ext4 로 포맷을 해주어야 겠지요?

    $ sudo mkfs.ext4 /dev/data_vg/data
    mke2fs 1.41.14 (22-Dec-2010)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    14614528 inodes, 58458112 blocks
    2922905 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=4294967296
    1784 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, 20480000, 23887872

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

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


이제 설정 끝입니다. 이제 편하게 마운트 해주시면 되겠습니다.

    $ mkdir data
    $ sudo mount /dev/data_vg/data ./data

매번 수동으로 하기 귀찮으니 fstab 에 등록 시켜줍니다. 아래 내용을 추가합니다.

    $ sudo emacs /etc/fstab

    /dev/data_vg/data         /home/crazia/data    ext4    default    0   0

이제 적당한 곳에 심볼릭 링크를 걸어서 일반 디렉토리처럼 써 주시며 됩니다.


저는 터미널 (Terminal) 에서 작업을 많이 합니다. 민트를 깔아보고 놀랐던 이유가 터미널 프로그램이 이뻐서 였습니다. 그래서 기본 설정이 '흰 바탕에 검은색 글씨' 였는데 바로 '검은색 바탕에 회색 글씨' 로 바꾸어 줬습니다. 역시 검은색이 마음이 안정된다고나 할까요?

그랬는데 한글 언어팩을 설치하고 났더니만 터미널 상에서 한글이 정말 보기 싫게 변하더군요. 그래서 나눔고딕 폰트를 설치해주고 (저번 아티클 참조)

/etc/fonts/conf.d/69-language-selector-ko-kr.conf

를 열어서


	
    
		
			monospace
		
		
			Dejavu Sans Mono
			NanumGothic
		
	

위와 같이 추가해 주면 됩니다.  (정확히는 이미 되어 있는 것을 변경해 주는 것입니다)


그러면 이렇게 나눔고딕 형태로 한글 폰트가 바뀌게 됩니다.


민트 에서 집에 있는 서버에 붙을 원격 데스크 탑 클라이언트를 찾던 와중에 설치해 봤는데 아주 만족 스러워서 이렇게 추천합니다. MS 환경하에서 제공되는 RDC (Remote Desktop Client)만 쓰다가 사용하니 속도가 아주 빠르고 좋습니다.

설치 방법은

$ sudo apt-get install remmina

추천 설명은 여기서 봤습니다. http://community.linuxmint.com/software/view/remmina


http://storymate.tistory.com/118

위의 방법으로 했을 때도 한글이 설정이 안되는 경우 (제 경우에 그랬습니다) 에 쓸만한 방법입니다. 저는 그냥 나눔고딕 폰트를 설치해 주니까 한방에 해결됐습니다.

$ sudo apt-get install ttf-nanum


폰트가 설정이 안되서 발생하는 문제처럼 보이더군요. 아 그런데 민트에서는 파이어 폭스가 훨씬 이쁘네요. 전 모든 북마크 세팅이 전부 크롬에 되어 있는지라 크롬을 메인으로 쓰고 있지만 (결국 크롬하고 파폭 두개를 다 쓰게 됐습니다)


골치 아프게 고민하지 마시고

http://localhost:631

에서 모든 것을 전부 설정해 줄 수가 있습니다.


기존 .xsession 의 내용이 

gnome-session --session=ubuntu-2d



로 되어 있었습니다.  우분투 새버젼 (12.04 Precise Pangolin) 으로 업데이트 한 후 원격 데스크탑으로 접속을 하니 프로그램 매니져가 안보이더군요. 

$ emacs ~/.xsession



후에 다음과 같이 내용을 바꿔줍니다.

gnome-session --session=gnome-classic



이후에는 제대로 나올 것입니다. 유아이가 좀 구리긴 해졌지만.. 안되는 것 보다는 낫지 않겠습니까? ㅎㅎ
아 중요한 것을 빼먹었습니다. xrdp 서버를 다시 띄워줘야 합니다. 

$ sudo /etc/init.d/xrdp restart
 * Stopping RDP Session manager                                                             [ OK ] 
 * Starting Remote Desktop Protocol server                                                 [ OK ] 


 자 이제 다시 접속해 보시면 될 것입니다. 
아침에 보니 출시가 됐더군요. 바로 업데이트를 해줬습니다. 

Penguin 이 될 꺼라는 예상을 했었지만 Pangolin 이 되버렸더군요. (모르고 있었음) 위키를 연결해뒀지만 생긴게 

 
이렇게 생겼더군요. 개미핥기의 일종이래나 뭐라나.. 천산갑이라니 뭔가 이상한 이름이군요 ㅎㅎ 

 
HBase 는 가-분산 방식 까지 설치되어 있다고 가정하고 Hadoop 은 완전-분산 방식까지 설치되어 있다고 가정합니다. (지난 포스트들을 찾아보세요)

4대의 서버에 걸쳐서 HBase 클러스터링 설정을 하는 것으로 하겠습니다. 

nobody1 - HMaster
nobody2 - RegionServer
nobody3 - RegionServer
nobody4 - RegionServer

 




이제 설정파일들을 검토하겠습니다.  

    conf/hbase-env.sh
   

  # export JAVA_HOME=/usr/java/jdk1.6.0/
  export JAVA_HOME=/usr/lib/jvm/java-6-openjdk


를 추가해주고 (아마 되어 있을 것입니다)

 

  # export HBASE_CLASSPATH=
  export HADOOP_HOME=/home/hadoop/work/hadoop-1.0.1
  export HBASE_CLASSPATH=${HBASE_CLASSPATH}:$HADOOP_HOME/conf


를 추가해줍니다. 
 

  # Tell HBase whether it should manage it's own instance of Zookeeper or not.
  export HBASE_MANAGES_ZK=true


이제 주키퍼를 사용한다고 설정해야 하는 부분입니다. 

conf/hbase-site.xml

 1    <configuration>
 2    <property>
 3        <name>hbase.rootdir</name>
 4        <value>hdfs://nobody1:9000/hbase</value>
 5    </property>
 6
 7    <property>
 8        <name>hbase.cluster.distributed</name>
 9        <value>true</value>
10    </property>
11
12    <property>
13        <name>dfs.replication</name>
14        <value>3</value>
15    </property>
16
17    <property>
18        <name>hbase.zookeeper.quorum</name>
19        <value>nobody1,nobody2</value>
20    </property>
21
22    <property>
23      <name>hbase.zookeeper.property.dataDir</name>
24      <value>/home/hadoop/work/hbase-0.92.1/zookeeper</value>
25      <description>Property from ZooKeeper's config zoo.cfg.
26        The directory where the snapshot is stored.
27      </description>
28    </property>
29   </configuration>
   
hbase.rootdir 은 하둡의 네임노드뒤에 /hbase 를 적어줬습니다. 
hbase.cluster.distributed 는 클러스터링을 할 것인지에 관한 것입니다. true 로 적어줬습니다. 
dfs.replication 은 복제셋을 얼마나 가져갈 것인지에 관한 설정인데 3 으로 정해줬습니다. 

zookeeper
관련 설정은 꼭 해줘야 하는 부분입니다. 
hbase.zookeeper.quorum 은 클라이언트가 접속해야 하는 주키퍼를 설정해줄 수가 있습니다. nobody1 과 nobody2 에 주키퍼가 떠 있어서 클라이언트의 접속을 받을 것이라는 설정입니다. 

   conf/regionservers

   

   nobody1
   nobody2
   nobody3
   nobody4


   
이것은 실제적으로 데이타가 저장이 되는 리젼 서버(Region Server)들이 저장되는 곳입니다. 여기에 쓰여져 있는대로 리젼서버들이 구동됩니다. 

이제 설정이 끝나고 설정을 복사해 줄 차례입니다. 

   

   $ cd ~/work/hbase-0.92.1
   $ rsync -av . hadoop@nobody2:/home/hadoop/work/hbase-0.92.1/
   $ rsync -av . hadoop@nobody3:/home/hadoop/work/hbase-0.92.1/
   $ rsync -av . hadoop@nobody4:/home/hadoop/work/hbase-0.92.1/


   이제 다 설정 되었으니 하둡을 먼저 구동시키고 HBase 를 구동시킵니다. 
   

   $ cd ~/work/hbase-0.92.1
   $ bin/start-hbase.sh 




+ Recent posts