'개발'에 해당되는 글 80

  1. 2015.10.13 Kafka Monitoring Tool - Burrow
  2. 2015.10.13 Kafka monitoring
  3. 2015.08.14 Schema Registry
  4. 2015.02.16 Yarn scheduler 가 application을 실행하지 않을 때
  5. 2014.11.08 hive debug with cli
  6. 2014.10.22 파일 안 문자열 치환
  7. 2014.10.22 mysql dump
  8. 2014.10.01 network trouble shooting
  9. 2014.09.21 hadoop 2.4.1 on mac
  10. 2014.09.05 mysql 설치
  11. 2014.04.28 Oozie logfilter
  12. 2011.02.13 MongoDB
  13. 2011.02.09 RailLink 무선랜카드 오류
  14. 2011.01.26 find 와 grep
  15. 2011.01.25 오픈 소스 소프트웨어 라이센스 가이드

Kafka Monitoring Tool - Burrow

https://github.com/linkedin/Burrow

위키 대로 따라 하기


Build and Install

1. GO 를 먼저 설치 해야 한다.

https://golang.org/doc/install 여기 Guide 대로 GO 설치

2. https://github.com/linkedin/Burrow/releases 에서 release 된 code 를 다운 로드 한다. (Burrow-0.1.0.tar.gz)

3. tar xzvf Burrow-xx.tar.gz > Burrow-0.1.0

4. GOPATH 설정

$ mkdir burrow-test

$ export GOPATH=/xxxx/burrow-text

$ cd $GOPATH/src/github.com/linkedin (디렉토리가 없다면, mkdir로 생성)

5. Burrow 디렉토리를 $GOPATH/src/github.com/linkedin/burrow 로 이동

$ cd $GOPATH/src/github.com/linkedin/burrow/

6. install

$ gmp install

$ go install

$ cd $GOPATH


Running Burrow

1. config 파일 만들기

$ mkdir $GOPATH/config

cp src/github.com/linkedin/burrow/config/burrow.cfg config/

cp src/github.com/linkedin/burrow/config/logging.cfg config/

2. burrow.cfg에서 zookeeper, broker 등을 적절히 수정. 필요하면 logging.cfg 수정

3. run

$GOPATH/bin/burrow --config path/to/burrow.cfg


Request to HTTP EndPoint

EndPoint list : https://github.com/linkedin/Burrow/wiki/HTTP-Endpoint

브라우저나 curl 등으로 조회.


1. Healthcheck

http://sembp:8000/burrow/admin

>>> GOOD


2. List Cluster

http://sembp:8000/v2/kafka

>>> {"error":false,"message":"cluster list returned","clusters":["seoeun-local"]}


3. Kafka Cluster Detail (위 리스트에서 나온 cluster 이름으로 조회)

http://sembp:8000/v2/kafka/seoeun-local

>>> {"error":false,"message":"cluster detail returned","cluster":{"zookeepers":["sembp:2181"],"zookeeper_port":2181,"zookeeper_path":"/kafka-cluster","brokers":["sembp:9092"],"broker_port":9092,"offsets_topic":"__consumer_offsets"}}


4. Cluster Topic Detail

http://sembp:8000/v2/kafka/seoeun-local/topic/employee

>>> {"error":false,"message":"broker topic offsets returned","offsets":[426822,35820,35820,1188253,35824,35827,419396,415688,801394,796091]}



burrow.cfg


신고

'개발' 카테고리의 다른 글

Kafka Monitoring Tool - Burrow  (0) 2015.10.13
Kafka monitoring  (0) 2015.10.13
Schema Registry  (0) 2015.08.14
Yarn scheduler 가 application을 실행하지 않을 때  (0) 2015.02.16
hive debug with cli  (0) 2014.11.08
파일 안 문자열 치환  (0) 2014.10.22
TRACKBACK 0 COMMENT 0

Kafka monitoring


1. kafka-manager

https://github.com/yahoo/kafka-manager

Yahoo에서 만들었는데, 설치해 보면 별 기능이 없다. 

일단 offset을 볼 수 없으니 답답하다. 


2. kafka-web-console

https://github.com/claudemamo/kafka-web-console

topic, offset, lag 를 UI 로 제공한다. 

그런데, git 에 보면 retired 한다고, kafka-manager 같은 거 고려해 보라고 한다. 왜? 이게 더 좋은데. 개발자가 더 이상 개발 안 한다니 할 수 없지만.


3. Burrow

https://github.com/linkedin/Burrow

Linkedin에서 GO 로 만들었다.

topic, offset, lag 제공.

현재는 HTTP EndPoint로 json 으로 데이터를 받을 수 있고, UI는 제공하지 않는다.

UI를 제공하지 않는 게 단점이지만, 반대로 생각하면 product 에 특수화된 monitoring metric과 함께 UI를 custom 하게 만들 수 있기 때문에 장점이 될 수 도 있다.

설치 방법은 git의 wiki를 참조하거나 http://seoeun25.tistory.com/550 참조.


4. KafkaOffsetMonitor

https://github.com/quantifind/KafkaOffsetMonitor

topic, offset, lag 를 UI로 제공


개인적으로는 kafka-web-console이 가장 맘에 들지만 더 개발 안한다니 뭔가 좀 찜찜하다.

그래서, Burrow나 KafkaOffsetMonitor를 사용할 예정인데, 쓰다 보면 뭔가 좀 더 필요한 게 있어서 마음이 바뀔 듯 하다.


 




신고

'개발' 카테고리의 다른 글

Kafka Monitoring Tool - Burrow  (0) 2015.10.13
Kafka monitoring  (0) 2015.10.13
Schema Registry  (0) 2015.08.14
Yarn scheduler 가 application을 실행하지 않을 때  (0) 2015.02.16
hive debug with cli  (0) 2014.11.08
파일 안 문자열 치환  (0) 2014.10.22
TRACKBACK 0 COMMENT 0

Schema Registry

Camus는 Kafka에 있는 message를 HDFS로 로딩해 주는 기능을 한다.

다음과 같이 MR을 실행하면 된다.

$ hadoop jar camus-example-<version>-shaded.jar com.linkedin.camus.etl.kafka.CamusJob -P camus.properties


Camus에서 avro format을 사용한다면 Schema Registry가 필요하다.

Schema Registry는  schema를 등록하고 조회하는 기능을 제공한다. 

Camus 코드에서 SchemaRegistry<S> 인터페이스를 보면 다음과 같다.

https://github.com/linkedin/camus/blob/master/camus-api/src/main/java/com/linkedin/camus/schemaregistry/SchemaRegistry.java


SchemaRegistry 구현체는 여러개 있지만 AvroRestSchemaRegistry 가 관리면에서 사용하기가 좋다. 이 구현체는 외부에 있는 RestFul Service를 통해서 schema를 관리 하는 것이다. 따라서 외부에 web server가 구동되어 있어야 하는데, camus의 코드를 보면 avro-repo-bundle-1.7.4-SNAPSHOT.jar 가 schema restfule service를 담당한다. 그런데 이 avro-repo-bundle-XXX.jar는 공개되어 있는 것이 아니고, jar만 lib폴더에 포함되어 있어서 web service를 띄울 수가 없다. 내가 방법을 잘 몰라서 못 띄웠을 수 도 있다. 아무튼 그래서 간단하게 schema restful service를 구현 하였다. 이 Repo 서비스는 server module과 client module로 구성되어 있고, server를 띄우고, camus의 SchemaRegistry 구현체에서는 client를 통해서 schema를 참조 한다. Schema RestFul Service는 confluent.io 에서도 제공하고, 이들 제품이 훌륭하다고 믿지만, confluent.io product를 사용하려면 이들의 kafka, camus 를 함께 사용해야 하기 때문에 linkedin의 kafka와 camus에 바로 붙여서 사용하기에는 무리가 있다.  

코드는 이곳에 : https://github.com/seoeun25/schema-registry


사용 방법

자세한 내용은 git의 README를 참조한다.

1. RepoServer 띄우기

build 해서 생성된 tar를 untar한 후  bin/repo.sh start 한다.

2. schema 등록하기

RepoClient를 통해서 하거나, REST로 등록한다.

3. Camus에서 schema 참조

camus.properties 파일에 다음과 같이 설정한다. url은 RepoServer를 start한 서버의 url이다.




신고

'개발' 카테고리의 다른 글

Kafka Monitoring Tool - Burrow  (0) 2015.10.13
Kafka monitoring  (0) 2015.10.13
Schema Registry  (0) 2015.08.14
Yarn scheduler 가 application을 실행하지 않을 때  (0) 2015.02.16
hive debug with cli  (0) 2014.11.08
파일 안 문자열 치환  (0) 2014.10.22
TRACKBACK 0 COMMENT 0

Yarn scheduler 가 application을 실행하지 않을 때

Job은  submit 되어서 resourcemanager 에서 scheduled 되었으나, 그당음 실행이 되지 않을 때

queue의 다음 값이 1로 되어 있으면 1개의 application만 실행할 수 있음

Max Schedulable Applications : 1

Max Schedulable Applications Per User :1

capacity scheduler

<property>

<name>yarn.scheduler.capacity.maximum-applications</name>

<value>10000</value>

<description>

Maximum number of applications that can be pending and running.

</description>

</property>

<property>

<name>yarn.scheduler.capacity.maximum-am-resource-percent</name>

<value>100</value>

<description>

Maximum percent of resources in the cluster which can be used to run

application masters i.e. controls number of concurrent running

applications.

</description>

</property>


신고

'개발' 카테고리의 다른 글

Kafka monitoring  (0) 2015.10.13
Schema Registry  (0) 2015.08.14
Yarn scheduler 가 application을 실행하지 않을 때  (0) 2015.02.16
hive debug with cli  (0) 2014.11.08
파일 안 문자열 치환  (0) 2014.10.22
mysql dump  (0) 2014.10.22
TRACKBACK 0 COMMENT 0

hive debug with cli

# hive debug with cli

$ hive -hiveconf hive.root.logger=DEBUG,console

신고

'개발' 카테고리의 다른 글

Schema Registry  (0) 2015.08.14
Yarn scheduler 가 application을 실행하지 않을 때  (0) 2015.02.16
hive debug with cli  (0) 2014.11.08
파일 안 문자열 치환  (0) 2014.10.22
mysql dump  (0) 2014.10.22
network trouble shooting  (0) 2014.10.01
TRACKBACK 0 COMMENT 0

파일 안 문자열 치환

file 안에 있는 문자열 치환

grep -rl 'windows' ./ | xargs sed -i 's/windows/linux/g'

for OSX
grep -rl '.OozieConfigs.' core/* | xargs sed -i "" 's/.OozieConfigs././g'
find . -name pom.xml -exec sed -i "" 's/4.0.0-nr1002/4.0.0-nr1003-SNAPSHOT/g' {} \;


신고

'개발' 카테고리의 다른 글

Yarn scheduler 가 application을 실행하지 않을 때  (0) 2015.02.16
hive debug with cli  (0) 2014.11.08
파일 안 문자열 치환  (0) 2014.10.22
mysql dump  (0) 2014.10.22
network trouble shooting  (0) 2014.10.01
hadoop 2.4.1 on mac  (0) 2014.09.21
TRACKBACK 0 COMMENT 0

mysql dump

1. dump

$ mysqldump -undap -pndap --databases ndap > ndap-dump.sql


2. restore

$  mysql -uroot -pndap ndap < mysql-dump/ndap-dump.sql

or 

mysql> source mysql-dump/ndap-dump.sql


3. show view list

SHOW FULL TABLES IN ndap WHERE TABLE_TYPE LIKE 'VIEW';



신고

'개발' 카테고리의 다른 글

hive debug with cli  (0) 2014.11.08
파일 안 문자열 치환  (0) 2014.10.22
mysql dump  (0) 2014.10.22
network trouble shooting  (0) 2014.10.01
hadoop 2.4.1 on mac  (0) 2014.09.21
mysql 설치  (0) 2014.09.05
TRACKBACK 0 COMMENT 0

network trouble shooting

CentOS

특정 URL에 접근이 안되었을 때 trouble shooting

192.168.100.64:8088 에 접속이 안될 때, Listen 하는 host(192.168.100.64) 에서 다음을 체크 


1. tcpdump를 install 

$ sudo yum install tcpdump

2. tcpdump 로 monitor

$ tcpdump -nv port 8088


3. 다른 서버(192.168.31.244)에서 192.168.100.64:8088 으로 request 하면 다음과 같이 tcpdump 에 응답이 찍힘

$ tcpdump -nv port 8088

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

16:31:23.645013 IP (tos 0x0, ttl 61, id 60257, offset 0, flags [DF], proto TCP (6), length 64)

    192.168.31.244.55019 > 192.168.100.64.radan-http: Flags [S], cksum 0x7747 (correct), seq 531699264, win 65535, options [mss 1416,nop,wscale 4,nop,nop,TS val 198214168 ecr 0,sackOK,eol], length 0

16:31:23.645450 IP (tos 0x0, ttl 61, id 24613, offset 0, flags [DF], proto TCP (6), length 64)

    192.168.31.244.55020 > 192.168.100.64.radan-http: Flags [S], cksum 0xa827 (correct), seq 3089124591, win 65535, options [mss 1416,nop,wscale 4,nop,nop,TS val 198214168 ecr 0,sackOK,eol], length 0

응답을 보니 192.168.31.244 에서192.168.100.64에 도달은 하지만 response를 보내지 않음. 아마도 방화벽이 있는 듯.

4. 방화벽 역할을 하는 iptables 확인

$ iptables -nvL

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         

  34M   13G ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 

   35  2804 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           

 627K   37M ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           

    3   192 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 

 322K   40M REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 


Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         

    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 



iptables 를 보니 REJECT 가 있음.
REJECT가 되지 않도록 iptables 를 수정하거나, service stop iptables 한다. 


신고

'개발' 카테고리의 다른 글

파일 안 문자열 치환  (0) 2014.10.22
mysql dump  (0) 2014.10.22
network trouble shooting  (0) 2014.10.01
hadoop 2.4.1 on mac  (0) 2014.09.21
mysql 설치  (0) 2014.09.05
Oozie logfilter  (0) 2014.04.28
TRACKBACK 0 COMMENT 0

hadoop 2.4.1 on mac

1. java 1.6 에서 namenode start 가 안될 때

2014-09-21 15:30:34,943 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join

java.lang.InternalError: Can't connect to window server - not enough permissions.

        at java.lang.ClassLoader$NativeLibrary.load(Native Method)

        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1833)

        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1730)

        at java.lang.Runtime.loadLibrary0(Runtime.java:823)

        at java.lang.System.loadLibrary(System.java:1044)

        at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)

        at java.security.AccessController.doPrivileged(Native Method)

        at java.awt.Toolkit.loadLibraries(Toolkit.java:1605)

        at java.awt.Toolkit.<clinit>(Toolkit.java:1627)

        at sun.awt.AppContext$2.run(AppContext.java:240)

        at sun.awt.AppContext$2.run(AppContext.java:226)

        at java.security.AccessController.doPrivileged(Native Method)

        at sun.awt.AppContext.initMainAppContext(AppContext.java:226)

        at sun.awt.AppContext.access$200(AppContext.java:112)

        at sun.awt.AppContext$3.run(AppContext.java:306)

        at java.security.AccessController.doPrivileged(Native Method)

        at sun.awt.AppContext.getAppContext(AppContext.java:287)

        at com.sun.jmx.trace.Trace.out(Trace.java:180)

        at com.sun.jmx.trace.Trace.isSelected(Trace.java:88)

        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.isTraceOn(DefaultMBeanServerInterceptor.java:1830)

        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:929)

        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:916)

        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312)

        at com.sun.jmx.mbeanserver.JmxMBeanServer$2.run(JmxMBeanServer.java:1195)

        at java.security.AccessController.doPrivileged(Native Method)

        at com.sun.jmx.mbeanserver.JmxMBeanServer.initialize(JmxMBeanServer.java:1193)



JmxMBeanServer.initialize 가 안되서 발생하는 것으로

JVM option 에 다음과 같이 추가 (.bashrc 같은 곳에)

## java process not to show

export JAVA_TOOL_OPTIONS='-Djava.awt.headless=true'


2. How to start hadoop

ssh 설정

http://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/SingleCluster.html


hdfs permission guide

http://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html

permission on local file system and HDFS

http://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/SecureMode.html


3. historyserver  가 start 되지 않을 때

seoeun@seair:/usr/lib/hadoop$ sudo -u mapred sbin/mr-jobhistory-daemon.sh start historyserver

chown: /usr/lib/hadoop-2.4.1/logs: Operation not permitted

--> mr-jobhistory-daemon.sh 에서  chown 하는 부분을 수정. (hadoop-daemon.sh 참조)

if [ ! -w "$HADOOP_LOG_DIR" ] ; then

echo '-w HADOOP_LOG_DIR'

mkdir -p "$HADOOP_MAPRED_LOG_DIR"

chown $HADOOP_MAPRED_IDENT_STRING $HADOOP_MAPRED_LOG_DIR

fi


* inode / 에 대한 permission이 없다고 하면,
/tmp/ 를 chmod 777 로 설정되었는 지 확인. (permission on local, hdfs)

4. job 이 submit 은 되어서 ACCEPTED는 되었으나 schedule 되지 않을 때
yarn.log를 잘 살펴보면 unhealthy node에 대한 log가 있다면,
014-09-22 13:43:24,802 INFO org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeImpl: Node 192.168.31.244:62938 reported UNHEALTHY with details: 1/1 local-dirs turned bad: /HDFS-2.4.1/yarn/nm-local-di

/HDFS-2.4.1/yarn에 대해서 yarn user에 대한 permission을 체크. 


5. 일반 user로 job 실행이 안될때

Permission denied: user=seoeun, access=EXECUTE, inode="/tmp/hadoop-yarn/staging":mapred:hadoop:drwxrwx---

at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:265)

yarn.app.mapreduce.am.staging-dir 에대한 execute 권한이 없을 경우, user를 supergroup에 포함시킨다. 예를 들면 hadoop.


6. nohub 때문에 process 가 detach 안될 때.

start-yarn.sh 를 타고 들어가서 nohub을 삭제


7. Error starting ResourceManager

org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: Error starting ResourceManager

java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.yarn.server.resourcemanager.resource.DefaultResourceCalculator not found 

capacity-scheduler.xml

<name>yarn.scheduler.capacity.resource-calculator</name>

<value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value>

8. Error starting NodeManager

FATAL org.apache.hadoop.yarn.server.nodemanager.NodeManager: Error starting NodeManager

java.lang.IllegalArgumentException: The ServiceName: mapreduce.shuffle set in yarn.nodemanager.aux-services is invalid.The valid service name should only contain a-zA-Z0-9_ and can not start with numbers

yarn-site.xml

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

신고

'개발' 카테고리의 다른 글

mysql dump  (0) 2014.10.22
network trouble shooting  (0) 2014.10.01
hadoop 2.4.1 on mac  (0) 2014.09.21
mysql 설치  (0) 2014.09.05
Oozie logfilter  (0) 2014.04.28
OAuth  (0) 2008.11.26
TRACKBACK 0 COMMENT 0

mysql 설치

1. remote connection이 안될 때

/etc/my.cnf  에서 bind 확인


2. password 로 접속이 안될 때.

select * from mysql.user 로 확인.

mysql.user 테이블에 user를 insert 하고 password 를 셋팅한다.

select user, host from mysql.user;

CREATE USER 'root'@'%' IDENTIFIED BY 'your-passwd'; 

flush privileges;

SET PASSWORD FOR 'root'@'%' = PASSWORD('your-passwd');


http://dev.mysql.com/doc/refman/5.1/en/set-password.html

신고

'개발' 카테고리의 다른 글

network trouble shooting  (0) 2014.10.01
hadoop 2.4.1 on mac  (0) 2014.09.21
mysql 설치  (0) 2014.09.05
Oozie logfilter  (0) 2014.04.28
OAuth  (0) 2008.11.26
Maven Repository  (0) 2008.11.07
TRACKBACK 0 COMMENT 0

Oozie logfilter

Oozie log를 볼 때 filter를 제공.

좀 더 빨리 원하는 로그를 검색할 수 있도록 한다. (via OOZIE-1737)


1. 사용법

 -logfilter opt1=val1;opt2=val1;opt3=val1


2. optiions

* START : startTime

* END : endTime

* TEXT : 검색할 단어

* LOGLEVEL : log level

* LIMIT : log를 보여줄 line 수

* RECENT : 최근 몇 시간 내의 로그. 단위는 minuite, hour : recent= 3m, recent=9h

* DEBUG : 내부 debug용 log로 test case에서 사용. CLI에서 사용하지 않는다. 


3. 예제

Filter option의 key는 대소문자를 구분하지 않는다.

Job이 terminal status이면 endTime은 lastModifiedTime이 된다.

Start가 지정되어 있는 데 recent가 있다면 recent를 우선으로 한다.

## start, end

$ oozie job -log 0000080-140424110127734-oozie-seoe-B -logfilter start='2014-04-28 09:00:00';end='2014-04-28 18:00:00';


## search text

$ oozie job -log 0000080-140424110127734-oozie-seoe-B -logfilter text=hello


## combination

$ oozie job -log 0000080-140424110127734-oozie-seoe-B -logfilter start='2014-04-28 09:00:00';end='2014-04-28 18:00:00';loglevel=ERROR|WARN;


신고

'개발' 카테고리의 다른 글

hadoop 2.4.1 on mac  (0) 2014.09.21
mysql 설치  (0) 2014.09.05
Oozie logfilter  (0) 2014.04.28
OAuth  (0) 2008.11.26
Maven Repository  (0) 2008.11.07
Maven Getting Started Guide(3)  (0) 2008.11.07
TRACKBACK 0 COMMENT 0

MongoDB

NoSQL db 중 하나.



설치
$ tar xvzf mongodb-linux-i686-1.6.5.tgz
$ cd mongodb-linux-i686-1.6.5
$ mkdir data
$ mkdir data/db
$ mkdir logs

DB start
$ bin/mongod --dbpath data/db --port 27017 --logpath logs/server.log --rest
or
$ bin/mongod --config conf/mongodb.conf
$ bin/mongod -f conf/mongodb.conf
config 설정 방법

config 예 (mongodb.conf)
dbpath=/opt/mongodb/data/db
logpath=/opt/mongodb/logs/mongodb.log
logappend=true
verbose=true

#bind_ip=127.0.0.1
port=27017
fork=true

rest=true
#auth=true
#noauth=true


Client test (CLI  사용)
다른 터미널에서
$ bin/mongo localhost:27017

DB stop
start option 에 fork 했으면 daemon 으로 뜨기 때문에 그때 알려준 pid 를 kill 하거나
pid 를 찾아서 kill 하거나, (어쨌든, kill).
Client 에서 admin 으로 변경한 다음, shutdown 하거나. (그 외 다른 깔끔한게 있겠지만, 일단 여기까지)
> use admin
> db.shutdownServer();


Admin 화면
db start option 에서 --rest 를 줬기때문에
브라우저에서
localhost:27017 하면 포트에 1000 더하라고 메시지 나오고
localhost:28017 하면 어드민페이지가 보인다.


Driver 다운로드 및 Java Language
maven repository 에는 2.3 있음.

데이터 모델.
Document 
여러개의 filed 명과 filed 값으로 구성(key-value). 
4MB 까지. (넘으면 GridFS 파일 시스템과 연동해야 함)
문서 단위로 저장 삭제, 수정할 수 있고, 내부의 필드 단위로 수정할 수 없다.
문서의 저장과 전송 포맷은 JSON.
Collection
Document 의 그룹.  RDB 에서 table 과 비슷.
DataBase
Collection 을 관리 하는 단위. RDB 에서 DB instance 와 비슷.

데이터 복제와 샤딩.
Sharding 은 키 기반으로 데이터를 분 산 배치시키는 방법 . Sharding 없이 복제만 구성하면 MySql 같이 Master-Slave 구조가 된다. 
이건 여기서  볼까.
신고

'개발 > MISC' 카테고리의 다른 글

MongoDB  (0) 2011.02.13
RailLink 무선랜카드 오류  (0) 2011.02.09
오픈 소스 소프트웨어 라이센스 가이드  (0) 2011.01.25
Thrift  (1) 2011.01.04
Self signed certificate Browser 에 적용하기  (0) 2010.03.25
Ubuntu 에서 apache2에 SSL 설정  (5) 2010.03.18
TRACKBACK 0 COMMENT 0

RailLink 무선랜카드 오류

오늘 회사에서 내자리까지 오는 유선 랜이 맛가있어서,
속도가 느리지만 무선이라도 써야겠다 싶은 마음에 AP에 접속했는데, 연결이 안된다.
아우..정말..

Ubuntu 에서 RailLink 계열의 RT2870, RT3070 칩셋을 가진 무선랜카드인 ipTime 의 ipTime 의 N200UA(RT2870), N100UM(RT3070) 가 무선이 안잡힐 때.


방법은

$ sudo vi /etc/modprobe.d/blacklist.conf
 한후 블랙리스트 마지막에 다음을 추가
blacklist rt2800usb
신고

'개발 > MISC' 카테고리의 다른 글

MongoDB  (0) 2011.02.13
RailLink 무선랜카드 오류  (0) 2011.02.09
오픈 소스 소프트웨어 라이센스 가이드  (0) 2011.01.25
Thrift  (1) 2011.01.04
Self signed certificate Browser 에 적용하기  (0) 2010.03.25
Ubuntu 에서 apache2에 SSL 설정  (5) 2010.03.18
TRACKBACK 0 COMMENT 0

find 와 grep

grep 과 find 조합해서 특정 문자가 들어간 파일 찾기

-i 는 대소문자 구분 없이.
-n 는 라인수 -H 는 파일 이름
$ find ./ -name '*.log' -exec grep -H -n -i 'check' {} \;
find 로 찾은 파일들이 {} 에 들어가고, -exec 로 grep 을 실행해서 문자열이 포함된 걸 검사.
find 의 여러 옵션을 사용해서 원하는 파일의 범위를 좁힐 수 있다. 

copy example

find ./ -type f \( -name 'aa*' -o -name 'bb*' \) -exec cp {} text \;

 


모든 파일 에서 grep 하기
$ grep -n 'hello' *
$ grep -r -n 'hello' * ( 하위디렉토리까지 검사)
$ find ./ * -exec grep -n -H 'mapred.task.id' {} \;
(어쨋든 find 와 결합한다면...-H 는 파일명 보이기)

RegExp 를 사용해서 검색 가능.
Examples

$ grep '^n' *

n으로 시작하는 모든 행을 출력한다.


$ grep '4$' file

(4로 끝나는 모든 행을 출력한다.)

$ grep -rni  '\.5' *

.5가 나오는 모든 행을 출력한다.
 

$ grep -rni  '^[we]' *

(w나 e로 시작하는 모든 행을 출력한다.)

 

$ grep -rni '\<[a-z].*n\>' *
소문자 하나로 시작하고, 이어서 임의 개수의 여러 문자가 나오며, n으로 끝나는 단어가 포함된 모든 행을 출력한다. 여기서 .*는 공백을 포함한 임의의 문자들을 의미한다.

$ grep -r -n -i 'CREATE.*.EMP' *
CREATE 다음에 여러 다른 문자열이 온 후 EMP가 있는 라인 리턴.




참고



신고

'개발 > Linux' 카테고리의 다른 글

find 와 grep  (0) 2011.01.26
DEB package install, remove 하는 방법  (2) 2010.06.22
tar 사용법  (0) 2010.04.26
Ubuntu 부트 메뉴 리스트  (0) 2010.03.15
Ubuntu 에서 Remote Folder 마운트 하기  (0) 2008.12.17
TRACKBACK 0 COMMENT 0

오픈 소스 소프트웨어 라이센스 가이드

KLDP 에 완전 잘 정리 되어 있군요.


내용을 조금 인용하자면,

소스 코드의 공개 여부가 주요 쟁점인데, 

GPL의 경우, GPL 프로그램의 소스코드를 이용자가 개발한 프로그램코드에 삽입하거나 링크시킨 후 함께 배포하고자 하는 경우, 이용자가 개발한 프로그램도 GPL 조건으로 배포해야 한다, 
즉 GPL에 의해 소스 코드 제공해야 함.
 
LGLP 은 GPL보다 조금 완화,
LGPL Library의 일부를 수정하는 경우 수정한 Library를 LGPL에 의해 소스 코드 공개. 
LGPL Library에 응용프로그램을 링크시킬(Static과 Dynamic Linking 모두) 경우 해당 응용프로그램의 소스를 공개할 필요 없음. 

BSD/Apache License 등은 수정하더라도 소스코드를 공개할 의무가 발생하지 않는다.

그런데 GPL 일 경우도 완화된 조건을 제시하는 경우가 있는데, Java 의 경우
두 번째 사례는 GNU Classpath 프로젝트와 자바(Java) 플랫폼사례이다. GNU Classpath 프로젝트는 자바(java)언어의 가상머신(virtual machines) 및 컴파일러에서 사용되는 핵심 클래스라이브러리(core class libraries)를 자유소프트웨어로 대체하기 위한 프로젝트인데, 동 프로젝트의 결과물을 GPL로 배포하면서도 이와 링크된 다른 독립된 소프트웨어는 GPL로 배포할 필요가 없다는 내용의 예외를 인정하였다. 그런데 2006년 말 Sun이 향후 자바 플랫폼을 GPL 조건으로 배포하겠다는 선언을 하면서, 자바 플랫폼 중 특히 Java SE(Java Platform Standard Edition)와 Java EE(Java Platform Enterprise Edition)의 GPL 배포조건에 Classpath 예외를 추가한다고 발표하였다. 그 결과 Classpath 예외조항을 포함한 GPL 조건의 자바 플랫폼을 이용한 응용프로그램도 소스코드를 공개하지 않고 배포할 수 있다.


그런데, 배포라는게 직접적인 배포만 의미하는 것 같다.
예로 든 MYSQL 을 보면, dual license 정책을 적용하여 GPL 과 상용라이센스를 제공한다. 
만약 GPL 을 사용하여 배포한다면 소스코드의 공개 의미가 있지만 웹 사이트에서 서비스만 제공할 경우는 직접 배포하는 것이 아니라서 GPL 의무를 지키지 않아도 된다는 것이다. 
배포라는 의미가 조금 혼란스럽다. 직접적으로 같이 패키징해서 주지 않는다면 배포가 아닌가보다.

그러나 한가지 주지하여야 할 것은 GPL의 의무사항은 소프트웨어를 배포할 때 발생하는 것이므로 만약 MySQL을 다운로드해서 MySQL과 연동되는 웹사이트 등을 만들어서 서비스만 하는 경우는 MySQL을 직접 배포하지 않는 것이므로 GPL의 의무사항이 발생하지 않는다는 것이다. 예를 들어 인터넷 포털 업체들은 MySQL의 상용 버전을 구입하지 않고 GPL 버전을 사용하면서 MySQL이나 관련 소프트웨어의 소스코드를 공개하지 않고 있다.


 

신고

'개발 > MISC' 카테고리의 다른 글

MongoDB  (0) 2011.02.13
RailLink 무선랜카드 오류  (0) 2011.02.09
오픈 소스 소프트웨어 라이센스 가이드  (0) 2011.01.25
Thrift  (1) 2011.01.04
Self signed certificate Browser 에 적용하기  (0) 2010.03.25
Ubuntu 에서 apache2에 SSL 설정  (5) 2010.03.18
TRACKBACK 0 COMMENT 0

티스토리 툴바