1. vmware 에서 가상머신에 centos를 설치한다.
   hostname을 zk001로 한다.
   
   ** 호스트 네임 변경방법
   "/etc/sysconfig/network" 파일을 수정후 재부팅한다.
   
   NETWORKING=yes
   HOSTNAME=zk001
   
2. root로 openjdk 1.8.0을 설치한다.
   $> yum -y install java-1.8.0-openjdk
3. iptables 서비스를 종료한다.
   $> service iptables stop
4. 서비스 자동시작을 해제한다.
   $> chkconfig iptables off   
   
5. 위의 가상머신을 clone 기능을 이용해 복제 하고
   hostname을 kafka001로 한다. 

   ** 호스트 네임 변경방법
   "/etc/sysconfig/network" 파일을 수정후 재부팅한다.
   
   NETWORKING=yes
   HOSTNAME=kafka001
   
6. zk001서버에 주키퍼를 설치한다.
    $>cd /usr/local/
    $>wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz
    - 압축을 해제한다.
$>tar xvfz apache-zookeeper-3.5.5-bin.tar.gz
- 소프트 링크를 생성한다.
$>ln -s apache-zookeeper-3.5.5-bin zookeeper
$>mkdir /data

7. zk001를 clone 기능을 이용하여 2대 복제하고 hostname을 zk002, zk003으로 수정한다.
   zk001 서버에서 /data/myid에 1을 입력한다.
   $> echo 1 > /data/myid
   zk002 서버에서 /data/myid에 2을 입력한다.
   $> echo 2 > /data/myid
   zk003 서버에서 /data/myid에 3을 입력한다. 
   $> echo 3 > /data/myid
   
8. zk001, zk002, zk003 서버에서 환경설정파일을 생성한다.
$> cd /usr/local/zookeeper/conf
$> vi zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data
clientPort=2181
server.1=zk001:2888:3888
server.2=zk002:2888:3888
server.3=zk003:2888:388

9. zk001, zk002, zk003  서버에서 주키퍼가 정상적으로 수행되는지 확인한다.
   $> cd /usr/local/zookeeper/bin/
   $> ./zkServer.sh start
   
   아래 명령어로 daemon이 떠있는지 확인한다.
   $>ps -ef | grep zookeeper
   
10. 5번 step에서 복제한 kafka001에 kafka를 설치한다.
    $> cd /usr/local/  
    $> wget https://archive.apache.org/dist/kafka/2.1.0/kafka_2.11-2.1.0.tgz
    $> tar xvfz kafka_2.11-2.1.0.tgz
    $> ln -s kafka_2.11-2.1.0 kafka
$> mkdir /data1
$> mkdir /data2

11. kafka001 서버를 2대 복제하고 hostname을 kafka002, kafka003으로 변경한다.
    각서버에서 주키퍼 서버로 접속이 되는지 확인한다.
$> nc -v zk001 2181
Connection to zk001 2181 port [tcp/eforward] succeeded!

12. 각서버에서 환경설정 파일을 변경한다.
    $> cd /usr/local/kafka/config/
vi 에디터로 아래 파일을 수정한다.
$> vi server.properties
  아래 부분을 찾아서 서버에 맞게 수정해 준다.
  ############################# Server Basics #############################
      # The id of the broker. This must be set to a unique integer for each broker.
      broker.id=1

  kafka001은 1로 수정
  kafka002는 2로 수정 
  kafka003은 3으로 수정
  
13. log 디렉토리 설정 수정
    아래 부분을 찾아서 각 서버에서 동일하게 수정을 한다.
log.dirs=/data1,/data2  
    
14. zookeeper.connect부분을 찾아서 아래와 같이 모든 서버에서 수정해줍니다.
    아래와 같이 입력하면 kafka가 주키퍼에 접속하여 /kafka라는 znode를 생성합니다.

    zookeeper.connect=zk001:2181,zk002:2181,zk003:2181/kafka

15. 각 서버에서 카프카를 시작한다 이때 & 기호를 붙여서 백그라운드에서 실행이 되도록 합니다.

   ./kafka-server-start.sh /usr/local/kafka/config/server.properties &

16. 주키퍼와 카프카의 상태확인
    zk001,zk002,zk003 서버에서 주키퍼 클라이언트 포트의 상태를 확인합니다.

$> ps -ef | grep 2181
root     12758  2653  0 23:09 pts/0    00:00:00 grep 2181

kafka001,kafka002,kafka003 서버에서 kafka 포트의 상태를 확인합니다.

$> ps -ef | grep 9092
root      9126  2459  0 23:09 pts/0    00:00:00 grep 9092

17. 주키퍼와 cli를 통해 주키퍼와 카프카가 잘연결 되었는지 확인
    $> cd /usr/local/zookeeper/bin
    $> ./zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
    [kafka, zookeeper]

[zk: localhost:2181(CONNECTED) 1] ls /kafka/brokers/ids
    [1,2,3]


18. 카프카 토픽 생성
$>  cd /usr/local/kafka/bin/
$> ./kafka-topics.sh \
--zookeeper zk001:2181,zk002:2181,zk003:2181/kafka \
--replication-factor 1 --partitions 1 --topic kang-topic --create

   - 참고로 토픽을 잘못 생성한 경우는 아래와 같이 삭제를 한다.
$> ./kafka-topics.sh \
--zookeeper zk001:2181,zk002:2181,zk003:2181/kafka \
--topic kang-topic --create

19. 카프카 메세지 퍼블리싱
    아래 명령어를 수행하면 메세지를 입력할 수 있는 프롬프트가 뜹니다.
    $> cd /usr/local/kafka/bin/ 
$> ./kafka-console-producer.sh \
   --broker-list kafka001:9092,kafka002:9092,kafka003:9092 \
   --topic kang-topic
   
프롬프트에 아래와 같이 입력합니다.
>first message
>second message

메세지 입력후 ctrl+c를 입력하면 입력창에서 나올 수 있습니다.

20. 카프카 메세지 수신
    아래와 같이 입력하면 kang-topic에 퍼블리싱된 메세지를 아래와 같이 확인할 수 있다.
$>./kafka-console-consumer.sh \
  --bootstrap-server kafka001:9092,kafka002:9092,kafka003:9092 \
  --topic kang-topic --from-beginning

    first message
    second message

by pacino.kang 2019. 6. 4. 15:32
문자  char      자릿수 지정가능
varchar 자릿수 지정가능
string 자릿수 지정불가
정수   TINYINT    1BYTE(2^8=256) 정수 -128~128 
SMALLINT   2BYTE(2^16=65536) 정수 -32768~32767
INT        4BYTE(2^32) 정수
BIGINT     8BYTE(2^64) 정수 
소수 FLOAT       4BYTE 소수, 자릿수 지정불가
DOUBLE     8BYTE 소수, 자릿수 지정불가
DECIMAL   

 소수 자릿수 지정가능 default는 (10,0)정밀도가 요구되는 곳에 사용된다. 

날짜  DATE   날자
  TIMESTAMP   날자 + 시간
논리형   BOOLEAN TRUE, FALSE

 

hive 타입 사용 시 주의 사 

정수 및 소수(int,bigint, double,float)
   - Insert 시 값에 싱글 쿼테이션으로 감싸도 입력가능하나  null로 입력 되는 경우도 있음(버전마다 다름)
   - Select시 where절에서 비교시 싱글 쿼테이션으로 감싸도 조회가 가능

date, timestamp
   - insert, select시에 모드 싱글쿼테이션으로 감싸 줘야 한다.

decimal  
   - default는 10,0 자리임 소수부를 입력하고 싶으면 필히 소수부를 지정해야 함.
   - 입력값이 소수부 자릿수 보다 큰 경우 정의된 소수자릿에서 4사5입됨
   - 입력값이 정수부 자릿수 보다 큰 경우 null로 입력됨

char, vachar 
   - 지정된 자릿수를 넘는 값을 입력 시에 정의된 자릿수 까지만 잘려서 입력됩니다.

 

 

 

 

by pacino.kang 2019. 6. 4. 10:10


1. postfix 설정
vi /etc/postfix/main.cf

relayhost = [smtp.gmail.com]:587 
smtp_use_tls = yes 
smtp_sasl_auth_enable = yes 
smtp_sasl_security_options = noanonymous 
smtp_tls_CAfile = /etc/postfix/cacert.pem 
smtp_sasl_password_maps = hash:/etc/postfix/gmail

2. /etc/postfix/gmail를 생성
새로 gmail 파일을 만들면서 아래와 같이 구문을 추가한다(본인의 gmail계정:계정패스워드와 같이 입력한다).

BASH
vi /etc/postfix/gmail

[smtp.gmail.com]:587 bigdata.exem@gmail.com:12345678


chmod 600 /etc/postfix/gmail

vi /etc/hosts
아래부분 주석처리
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

3. CA certificate(인증서)를 생성
CA certificate를 생성할때 make 명령어를 사용하는데 CentOS 6.4 Minimal엔 설치되어 있지 않다.

postmap을 통해 조회 테이블을 만든다. 이 명령어를 사용하면 gmail.db 파일이 생성된다.

BASH
postmap /etc/postfix/gmail


BASH
yum install make
디렉토리 위치를 변경한다.

BASH
cd /etc/pki/tls/certs
키와 테스트 인증서를 하나의 파일에 생성한다.

BASH
make hostname.pem


아래와 같은 입력 커맨드가 뜨면 적당히 입력한다.

# 국가코드
Country Name (2 letter code) [GB]: kr

# 도이름
State or Province Name (full name) [Berkshire]: Gyeonggi-do

# 도시이름
Locality Name (eg, city) [Newbury]: Ansan-si 

# 회사이름
Organization Name (eg, company) [My Company Ltd]: exem

# 부서명
Organizational Unit Name (eg, section) []: exem

# 이름 또는 호스트이름
Common Name (eg, your name or your server’s hostname) []: pacino.kang

# 이메일주소
Email Address []: bigdata.exem@gmail.com
생성된 hostname.pem 파일을 복사

BASH
cp /etc/pki/tls/certs/hostname.pem /etc/postfix/cacert.pem
4. 추가 설치
SASL 관련 에러가 나기에 설치했다.

BASH
yum install cyrus-sasl-plain

5. 서비스 재시작
BASH
service postfix restart

'linux' 카테고리의 다른 글

리눅스에서 특정포트가 열려 있는지 확인  (0) 2019.06.04
리눅스에서 서비스 등록/해제  (0) 2019.06.04
by pacino.kang 2019. 6. 4. 09:31
| 1 2 3 4 ··· 8 |