이 블로그 검색

2014년 7월 29일 화요일

Jenkins 설치 centos 6.5






  1. Jenkins download
    1. http://pkg.jenkins-ci.org/redhat/
    2. wget http://pkg.jenkins-ci.org/redhat/jenkins-1.566-1.1.noarch.rpm
  2. rpm 설치
    1. rpm -Uvh jenkins-1.566-1.1.noarch.rpm
  3. jenkins 시작
    1. service jenkins start
  4. jenkins 구동 확인
    1. jps
    2. netstat -ntpl | grep LISTEN
      1. 8080 포트가 열려있는지 확인
      2. 그리고 익스플로어에서 접속(localhost:8080)

2014년 7월 26일 토요일

eclipse maven install error - tools.jar not found



eclipse 에서 maven project 를 빌드할때,

maven clean 후 install 하면

Fatal error compiling: tools.jar not found: C:\Program Files\Java\jre7\..\lib\tools.jar


이런 에러가 발생할때가 있다.

이는 maven 이 jdk 를 기준으로 빌드를 해야 하는데 eclipse 는 기본으로 jre 를 가지고 빌드를 하기 때문에 발생하는 에러이다.

해결방법은
eclipse 에서 preferences -> Java -> Installed JREs 안에 보면
jre버전이 체크되어있을텐데
add 하고 Standard VM 선택후,
JRE home 을 jdk 를 설치한 home 으로 바꿔 선택한다.
그리고 기존에 jre 는 삭제 또는 체크해제 한다.

(이는 eclipse LUNA 버전 기준이다)

그리고 다시 maven install 하면 해결된다.

hadoop 2.x HA 구성을 위한 QJM 설정 및 hbase 설정


hadoop QJM(quorum journal manager)
1. core-site.xml 파일 수정
<property>
<name>ha.zookeeper.quorum</name>
<value>mydb-zookeeper1:2181,mydb-zookeeper2:2181,mydb-zookeeper3:2181</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mydbcluster</value>
</property>

2. hdfs-site.xml 파일 수정
<property>
<name>dfs.nameservices</name>
<value>mydbcluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mydbcluster</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mydbcluster.nn1</name>
<value>mydb-namenode1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mydbcluster.nn2</name>
<value>mydb-namenode2:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mydbcluster.nn1</name>
<value>mydb-namenode1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mydbcluster.nn2</name>
<value>mydb-namenode2:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://mydb-journalnode1:8485;mydb-journalnode2:8485;mydb-journalnode3:8485/mydbcluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/mydb/hdfs/jn</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.mydbcluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/mydb/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>

3. 각 노드로 설정파일 배포
scp -r $hadoop_home/etc/hadoop mydb@nodes:$hadoop_home/etc/

4. quorum journal node start
mydb-journalnode1
mydb-journalnode2
mydb-journalnode3
각 노드에서
$HADOOP_HOME/sbin/hadoop-daemon.sh start journalnode
jps 에서 JournalNode 확인

5. active namenode 에서 namenode format 수행
$HADOOP_HOME/bin/hdfs namenode -format
미리 format 되어있으면 상관없음.
그리고 namenode 만 실행시켜둔다.
$HADOOP_HOME/sbin/hadoop-daemon.sh start namenode

6. standby namenode 로 설정할 노드에서 데이터 싱크를 맞춰줘야 함
$HADOOP_HOME/bin/hdfs namenode -bootstrapStandby
실패하면 active namenode 에서 namenode daemon 이 실행중인지 확인해본다.
standby namenode 도 실행
$HADOOP_HOME/sbin/hadoop-daemon.sh start namenode

7. namenode 2군데 모두 zkfc 실행
$HADOOP_HOME/sbin/hadoop-daemon.sh start zkfc

8. 둘다 standby 로 되어있으면 하나를 active 로 바꾸어준다
$HADOOP_HOME/bin/hdfs haadmin -transitionToActive nn1
**. haadmin options
Usage: DFSHAAdmin [-ns <nameserviceId>]
[-transitionToActive <serviceId>]
[-transitionToStandby <serviceId>]
[-failover [--forcefence] [--forceactive] <serviceId> <serviceId>]
[-getServiceState <serviceId>]
[-checkHealth <serviceId>]
[-help <command>]

9. 수동으로 failover 를 수행할려면
$HADOOP_HOME/bin/hdfs haadmin -failover nn1 nn2
(nn1 이 fail 났으니 nn2 를 active 로 바꾸어라는 명령)
10. datanode 들도 각각 실행하면 hdfs 를 사용 가능하다.
각 노드마다
$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode
를 수행해도 되고,
마스터에서
$HADOOP_HOME/sbin/start-all.sh
를 수행해도 됨.

11. hbase 설정파일 변경
hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://mydbcluster/hbase</value>
</property>
hbase conf 파일들 배포
scp -r $hbase_home/conf mydb@nodes:$hbase_home/

12. hdfs qjm, hbase 설정 끝.

HBase snapshot 사용 간단

테스트 하기전, hbase table 을 백업해두고 싶을때가 있다.

hbase shell 에서 
snapshot 'tablename', 'snapshot-tablename' 
을 하면 snapshot 이 만들어진다.

생성된 snapshot 을 확인하기 위해서는
list_snapshots
하면 위에서 생성한 'snapshot-tablename' 이 보인다.

테스트가 끝난후 백업해둔 테이블을 복구 하고 싶을땐
사용하던 테이블을 disable 한 후, restore 한다.
disable 'tablename'
restore_snapshot 'snapshot-tablename'

끝.