일반적으로 알려진 Hive 성능을 높이기 위한 방안 알려진 방안 HDP를 사용할 경우

[Tez Engine 사용] (현재 사용중)

MR(Map Reduce)는 여전히 대용량 배치 작업에 사용되고 있지만 이제 구 시대의 기술이 되어 버렸죠. Tez 엔진을 사용하면 2배 이상의 성능 향상이 가능 함


[ORC File  사용] (현재 사용중)

일반적인 TEXT FILE 형태로 HIVE Table에 데이터를 넣는 것 보다 ORC File 형태로 입력하면 좀더 나은 성능을 얻을 수 있다. 일반적으로 Hive Table을 생성 할때

“CREATE TABLE TESTTABLE (value string, key string) STORED AS ORC” 만들고

“insert OR Load Data”를 사용하여 TABLE에 입력하면 된다.

추가적으로 SNAPPY 압축을 걸어 줄 수 있다.

“CREATE TABLE TESTTABLE (value string, key string) STORED AS ORC TBLPROPERTIES (“orc.compress”=”SNAPPY”)”

ORC 파일 형태의 파일이 TEXT 파일 형태보다 용량을 1/4정도 절감 할 수 있습니다. 여기에 SNAPPY 압축으로 데이터 용량을 더 줄이는 것이 가능 하다


[VECTORIZATION 사용] (현재 사용중)

Hive Configuration에 존재 하는 항목 이다.

hive.vectorized.execution.enabled = true

hive.vectorized.execution.reduce.enabled = true

위와 같이 설정하면 VECTORIZATION을 사용 가능 하다

VECTORIZATION은 ‘like’ scan, aggregations, fliters and joins의 성능 향상을 가져 온다


[PARTITION 사용] (현재 미사용)

PARTITION은 특정 키를 기준으로 HDFS에 저장되는 파일의 위치를 분리 한다.

QUERY 수행 시 PARTITION KEY를 Filter 조건으로 걸어 주면 해당 지역의 파일만 스캔하여 분석을 하기 때문에 빠른 응답 속도를 보인다.

하지만 FULL SCAN QUERY의 경우 속도 저하가 발생합니다.

그리고 PARTITON으로 분할 입력 시 HDFS내에 파일 내에 개수가 증가하게 될 경우 작은 용량의 파일의 개수가 증가하면서 FILE I/O 부하가 증가하여 전체적인 속도 저하가 크게 발생하게 된다.

지금까지 PARTITON을 사용 하는 것 보다 FULL SCAN QUERY를 사용 하는 것이 더 빠른 양의 데이터(ㅡㅡ)였기에 사용하지 않고 있었지만 데이터의 증가가 빠르게 이루어 지고 있는 만큼 적용 후 테스트를  더 진행해 봐야 할 것 같다.


[COST BASED QUERY OPTIMIZATION 사용] 

QUERY 수행 PLAN을 최적화 하여 사여 EXCUETION 하도록 하는 기능 이다.

Configuration

hive.cbo.enable=true

hive.compute.query.using.stats=true

hive.stats.fetch.column.stat=true

hive.stats.fetch.partition.stat=true

위 설정으로 사용 가능 하며 현재 설정되어 있는 옵션

분석을 원하는 Table 에

analyze table [tablename] compute statistics

analyze table [tablename] compute for columns;

명령어를 하면 각 컬럼에 대한 통계 데이터를 생성하여 최적의 쿼리 PLAN을 찾아 준다고 한다.


[쿼리 최적화] 

가장 중요한 것은 쿼리 최적화 이다. 쿼리를 작성 할 때 나도 가끔 잊곤 하는 것이 있는데..

항상 explain 으로 쿼리 plan을 확인 하는 습관이 필요 하다.

아무리 최적화를 한다고 해도 쿼리를 잘 못 짜면 아무 소용이 없다.

UDF Function 도 마찬가지…



[간단한 테스트]

CBO

TABLE을 분석 하기 전

select pid , count(*) from poiranklogtable_orc group by pid limit 1000

QUERY의 execute plan 이다.

눈여겨 볼 것은 맨 위 상단의

Plan not optimized by CBO

Reducer 2 Vectorized

Map 1 vectorized

이다. 위에서 언급 했던 vectorization이 적용 되어 있다고 하고 CBO로 최적 화 되지 않았다고 나온다.

쿼리 수행 시간 : 60.429

“analyze table poiranklogtable_orc compute statistics for columns” 실행 후

CBO_after

겉으로 보기에는 별 차이가 없어 보인다.

상단에 Plan not optimized by CBO 도 그대로 보인다.

Statistics:Num rows: 4366386 Data size: 39956388 Basic stats: COMPLETE Column stats: COMPLETE

자세히 살펴보면 위와 같이 group by operator 에서 Data Size와 Num Rows의 개수가 줄었다.

쿼리 수행 시간 : 47.33

CBO 를 사용하기 위해서 analyze 명령을 수행해야 하는데 이 수행 명령 또한 소요 시간이 발생한다. (위의 Table에서는 소요 시간 32초 즉 전체 수행 시간: 32+47 = 79)

그냥 analyze를 사용한다고 해서 optimized 하게 모든 plan이 다 적용 되는 것도 아닌 것 같다. 데이터가 적재 될 때 마다 분석 쿼리를 수행해야하는 지도 불분명 하다.

CBO기능은 좀더 확인을 해봐야 할 듯 하다.

'Hun Site > IT' 카테고리의 다른 글

개인 위키 gollum 위키 설정 for mac  (0) 2017.02.20
Hadoop DATANODE Java Heap Warning  (0) 2016.08.24

 톰이 말해 준 대로 사람들의 눈을 피해 서두르지 않고 빠르게 발을 옮겼다.


익숙한 냄새가 난다. 그녀가 근처에 있다는 걸 내 직감이 말해주고 있다. 내 직감이 이끄는 데로 발을 옮긴다.


저기 반지하의 조금 열린 틈 사이로 익숙한 냄새가 세어 나오고 있다.


난 그 창문 너머로 방안을 들여다 보았다. 톰의 아지트 보다 더 어두운 방안 한 쪽 구석에 무언가 웅크리고 앉아 있는 게 보인다.


그녀인 것 같다. 방은 몇 일 동안 치우지 않은 듯 보였고 그녀는 간간히 작은 어깨의 떨림으로 살아 있음을 내게 말해주고 있었다.


기껏해야 고양이인 내가 왜 이렇게 그녀를 신경쓰고 있는 지 모르겠다.


무엇인가 내가 그녀에게서 받은 것들을 조금이라도 보답하고 싶은 것일까... 


지금까지 인간들을 지켜 보는 것이 나에게는 그냥 지루한 일상의 놀이 같은 거였을 뿐인데... 


그녀가 먹이를 주지 않아도 굶어 죽을 일도 없는 나인데...


머리가 복잡해 진다. 


으아악 내 머리 속에 그녀는 뭐란 말인가?


'야~~옹...?!'


이런 나도 모르게 소리를 지르고 말았다.


음?!


그녀가 고개를 들어 창밖을 보았다. 내 눈과 그녀의 눈이 마주친 채로 시간이 멈춰 버린 것 같았다. 난 그 자리에서 굳어 버렸다.


그녀는 자리에서 일어나 창문을 열고 굳어 버린 나에게 다가 왔다.


'안돼... 움직여야 해 자리를 떠야해...안돼...돼..돼..돼..'


어느새 난 그녀의 품에 안겨 있었다.


그녀는 나를 안고 한 동안 계속 흐느꼈다.


얼마간의 시간이 흘렀을까?


그녀가 나에게 나지막하게 속삭였다.


'고마워.. 나에게 찾아와 줘서...'


나도 그녀에게 속삭였다.


'야옹..(너 참 따뜻하다...)'




<----------------------끝----------------------->


작가의 말 - 


보통 길 고양이를 입양할 경우 간택 당했다라는 표현을 많이 쓴다. 


그런 인연이 단순한 인연이 아님을 말하고 싶었다.


사람과의 인연도 그렇고


동물과의 인연도 그렇고 서로의 관계를 너무 쉽게 생각하는 요즘의 현실이 조금 안타깝다.


'Hun Site > 창작 소설' 카테고리의 다른 글

간택(벤치의 그녀(2))  (0) 2016.08.10
간택(벤치의 그녀(1))  (0) 2016.08.04




부산에 가면 다시 나를 볼 수 있을까 
고운 머릿결을 흩날리며 나를 반겼던
그 부산역 앞은 참 많이도 변했구나
어디로 가야 하나 
너도 이제는 없는데

무작정 올라가는 달맞이 고개에 
오래된 바다만 오래된 우리만 시간이 멈춰버린 듯
이대로 손을 꼭 잡고 그때처럼 걸어보자

아무생각없이 찾아간 광안리
그때 그 미소가 그때 그 향기가
빛바랜 바다에 비춰 너와 내가 파도에 부서져 깨진 조각들을 마주본다

부산에 가면







Sigma dp2x

f/11, 15초, ISO-100, 초점거리-24mm(환산 41mm)







'Kyu Site > Minguinho's Photo life' 카테고리의 다른 글

비를 내려 줘요  (0) 2016.08.04

 난 먼 여행을 좋아하지 않는다. 특히 내 구역을 벗어나는 일은 좋아 하지 않는다.

 다른 이들이 나에게 시비를 거는 것도 싫지만 익숙한 곳을 떠나 낯선 곳으로 가는 것은 영 찜찜한 기분이 들기 때문이다.

 일단 그녀는 공원의 동쪽 입구 쪽에서 걸어 왔다. 그렇다면 East Bay 쪽인데.. 

 그 곳은 톰의 구역이다. 멍청이 톰. 먹을 것 밖에 모르는 녀석!

 너무나도 멍청한 녀석인데 먹을 것에 대한 욕심이 강해서 사람들에게 배를 보여주며 먹이를 얻는 자존심도 없는 녀석이다.

 날이 밝았다. 사람을 찾을려면 일반적으로 밤보다는 낮이 좋다. 

 졸린 몸을 이끌고 오래간 만에 내 구역을 벗어나 East Bay쪽으로 갔다.

 내 구역을 벗어나니 기분이 찜찜하다. 누군가 나를 공격해도 할 말이 없는 상황이다.

 그래도 톰은 누가 자기 구역에서 배를 보여주며 구걸만 하지 않으면 공격하지는 않는다. 

 저기 톰이 보인다. 톰은 그냥 흔하디 흔한 모습이다. 갈색, 검정색, 흰색이 썩인 지멋대로인 패턴 무늬를 가지고 있고 굳이 특징을 찾자면 오른쪽은 갈색 점박이 이고 왼쪽눈은 검정색 점박이란 것 정도이다. 사람들은 신기한 펜더 문양이라고 좋아라 하는 것 같지만...

 난 조심 스럽게 톰에게 다가 갔다. 톰은 만사가 귀찮은지 담벼락에 붙어서 그냥 누워 있었다.

 '어이 톰!'

 '잉? 니가 여기는 왜 왔어? 무슨 일인가?!

 톰은 몸을 벌떡 일으켜 나를 바라 보았다.

 '워워! 진정해 지나가는 길이야. 뭐 좀 물어 보려고 말야!'

 '뭔데?'

 '너 혹시 짙은 검정색머리가 어깨까지 오고 좀 마른 채형에 예쁘장하게 생겼지만 좀 어두운 표정을 하고 있는 아가씨 알아? 거의 매일 해가 질 때쯤 이 길을 지나 공원으로 지나갔을 텐데 말이야!'

 '누구? 모르겠는데 그런 사람..'

 아... 내가 질문을 잘못 했다... 나 처럼 관찰력과 묘사력이 뛰어난 고양이는 흔치 않은데 말이다.

 '매일 고양이 먹이를 들고 다니는 여성알아? 고양이 먹이를 주거나 말야... 최근에 먹이를 주다가 안주고 있을 텐데 말이지?'

 '오~~ 그 정어리 맛 사료를 주는 여성 알다 마다!'

 톰은 그 정어리 사료의 맛을 기억 속에서 꺼내 음미하듯이 입 맛을 다셨다.

 '요즘 그 맛있는 정어리 사료를 먹을 수가 없어서 아쉬워... 안먹은 지 4일이 되었군. 그런데 갑자기 그 아가씨는 왜?! 너 혹시 그 여자애 한테 입양 당할려고 그러냐? 그 여자는 딱봐도 좁은 원룸에 사는 가난한 사람처럼 보이던데 좋은 선택이 아냐'

 먹이를 매일 구걸해야 하는 우리 같은 길 고양이 톰이 그런 말을 하니 좀 뭔가 우스워 보였다. 

 '왜? 내가 이런 말을 하니 우습냐? 우리가 말야 아무리 길 고양이라고 해도 내일 죽을 지도 모른다고 해도 말야 선택 권 조차 없는 건 아니 잖아? 좀더 자존감을 가지라고 친구~'

 역시 길 고양이라서 그런지 눈치는 백단이다.

 '톰 그 여자 어디 사는 지 알아?'

 '알지 저기 저 사거리에서 왼쪽으로 가서 두번째 집 반지하 일꺼야'

 역시 톰은 자신의 먹이 공급지를 정확히 알고 있었다. 

 '여기서 자리 잡을 생각은 말어! 여긴 내 구역이야 룰 알지?

 '그래 알아 고마워. 난 내 공원이 좋아 걱정 말아~'

 난 톰에게 인사하고 조심 스럽게 그녀의 집으로 향했다.

 눈 앞에 보이는 차들 많은 사람들 휴... 역시 내 공원이 좋긴 좋다.

 



'Hun Site > 창작 소설' 카테고리의 다른 글

간택(벤치의 그녀(3))  (0) 2016.08.16
간택(벤치의 그녀(1))  (0) 2016.08.04

소스 코드 :

package main

import (
  "bufio"
  "fmt"
  "os"
)

func main() {
  fo, err := os.Open("test.txt")
  if err != nil {
    panic(err)
  }
  defer fo.Close()

  reader := bufio.NewReader(fo)
  for {
    line, isPrefix, err := reader.ReadLine()
    if isPrefix || err != nil {
      break
    }
    fmt.Println(line)
  }
}


설명 :

func (b *Reader) ReadLine() (line []byte, isPrefix bool, err error)

isPrefix는 line(byte)로 담을 수 없는 길이일 경우 true로 설정되고, err는 특수한 경우 발생하므로

위 소스 코드처럼 isPrefix와 err를 함께 검사하도록 한다.

line은 byte타입이므로 string으로 변환하여 사용하면 된다.

'Nam Site > Go' 카테고리의 다른 글

[Go] 고루틴(goroutine) 개수 설정하기  (0) 2016.09.02
[Go] 변수타입 알아보기  (0) 2016.08.04

Code :

package main

import (
  "fmt"
  "reflect"
  "time"
)

func main() {
  var now time.Time = time.Now().UTC()
  fmt.Println("now is a type of: ", reflect.TypeOf(now))
  var name string = "Carl Johannes"
  fmt.Println("name is a type of: ", reflect.TypeOf(name))
  var age int = 5
  fmt.Println("age is a type of: ", reflect.TypeOf(age))
}


Output:

$ go run type_of.go
now is:  time.Time
name is:  string
age is:  int

'Nam Site > Go' 카테고리의 다른 글

[Go] 고루틴(goroutine) 개수 설정하기  (0) 2016.09.02
[Go] File ReadLine (1)  (0) 2016.08.08



비를 내려줘요 제발 소나기면 더 좋구요
저 사람 모르게 내 눈물 들키지 않게

머리부터 발 끝 까지 온 몸을 하염없이 적시면
우는지 어떤지 아무도 모를 테니까

비를 내려줘요 제발 빗속에 나를 가려줘요
눈물 젖은 내 얼굴 못 보게 날 구해줘요
하나였던 시간으로 그대 앞에서 웃던 나로
데려가줘요 우리를 되돌려줘요
내 곁을 떠나는 그대가 미워요

갈 길을 잃은 내 멍청한 걸음을 멈춰
한 숨 또 한 숨 언제까지 나 이래야할지..
길을 알려줘요 제발 어디로 가죠

어떡해야 그댈 잊죠 나쁜 기억을 떠올려도
좋았던 것만 생각나 가슴 망가지는데.
어느 노래의 가사처럼 사람으로 잊어보려고
노력 해봐도 말처럼 쉽지 않네요

그렇게 떠나게 만든 날 용서해요
사랑을 망쳐서 미안해 미안해요




Nikon D90 / Tamron SP 90mm F2.8 Di Macro

f/4.5, 1/160초, ISO-3200, 초점거리-90mm







'Kyu Site > Minguinho's Photo life' 카테고리의 다른 글

부산에 가면..  (0) 2016.08.12

햇살이 뜨겁다. 비가 내리고 나면 숨이 턱턱 막힐 듯한 뜨거운 공기로 인해 한 걸음 한 걸음 움직이기가 힘들어 질것 같다. 그래서 인지 어떻게 보면 지금은 날씨가 참 좋다고 여겨 질 만 하다. 

 공원에는 많은 사람들이 가족과 함께 나들이를 나온 것 처럼 보인다.

 난 일찌감치 나와 어느 시간에도 햇살을 막아 줄 수 있는 커다란 느티나무 밑에 자리를 잡고 앉았다. 덥지도 않은 지 어린 아이들은 마냥 신나서 뛰어 다니고 있고 그 아이들의 부모들로 보이는 사람들은 돗자리를 깔고 술과 먹을 것을 함계 나눠 먹고 있다.

 다들 즐거워 보인다. 

 난 뭐 즐거울 것도 없고 나쁠것도 없는 상황에서 그냥 이렇게 시원한 곳에 앉아 사람들을 지켜보는 것이 어느새 일상이 되어 버렸다.

 저기 앉아 있는 사람들은 무슨 이야기를 하며 웃을까?

 저기 뛰어 놀고 있는 아이들은 무슨 생각을 하며 지낼까?

 나는 도저히 상상이 되지 않는다. 뭐 딱히 그렇게 궁금하지도 않다.

 사람들의 세상살이에 별로 궁금해 하지 않는 나 이지만 요즘은 신경쓰이는 사람이 있다.

 내가 이른 시간 부터 이 곳에 자리 잡고 있는 이유 이기도 하다. 매일 저녁 해가 질때 쯤이면 반 대편 벤치에 매일 나타나는 여성이 있는데 요즘 통 모습을 보이지 않는다.

 그녀는 매일 저녁 때 쯤이면 고양이 사료를 들고 와서 벤치 주위에 놓고는 벤치에 혼자 앉아서 음악을 들으며 멍하니 하늘을 한 30분쯤 보다가 돌아가곤 한다. 그녀의 모습을 보고 있자니 왠지 슬퍼 보이기도 하고 왠지 외로워 보이기도 하고... 좀 알 수 없는 연민이 느껴진다고 할까?

하긴 뭐 내가 그런 것을 알 만한 처지는 아니지만 보이다가 보이지 않으니 신경이 쓰인다.

 혹시 나오는 시간이 달라진 건 아닐가 해서 이른 시간부터 여기에 자리를 잡고 있었지만... 역시나 오늘도 오지 않는 것 같다.

 벌써 해가 질 시간이 다가 온다. 해가 지기 시작하면 공원을 가득 채우고 있던 아이들은 사라지고 연인들이 공원을 채우기 시작한다.

 슬슬 나도 배가 고파오기 시작한다. 생각해보니 일찍 여기에 자리를 잡느라 아무것도 먹지 않은 것 같다. 

 때마침 한 쌍의 커플이 그녀가 늘 앉던 벤치에 앉아 이야기를 하고 있다. 그들의 손에는 오징어 포가 들려져 있었다. 

 흠 뭐 내가 좋아 하는 메뉴는 아니지만 배가 고프니 일단 배부터 채워야 겠다.

 자리에서 일어나 기지개를 펴고 나의 매무새를 확인해 본다.

 '얼굴도 좋고'

 '손도 깨끗하고'

 '이 정도면 OK!'

 난 그 커플에게 다가가 세상에서 가장 부드럽고 달콤한 목소리로 말을 걸었다.

 "야~~~옹~~"

 "어머 이 고양이 귀엽다.!!"

 역시 여자가 먼저 반응을 보였다. 난 그녀의 다리에 다가가 몸을 비볐다. 이 정도면 안넘어 오지 않고 못 베기지 

 "이거 완전히 개낭이 인데?"

 남자가 나를 쓰담으려고 하자 난 슬쩍 몸을 빼며 여자를 그윽한 눈으로 바라 봤다. 솔직히 누가 내 몸을 쓰담는 건 그리 기분이 좋지 않기 때문이다. 하물며 남자가 말이다.

 "자 이거 먹어~"

 역시 여자는 눈치가 빠르다. 그래서 난 여자가 좋다. 그 동안 매일 먹던 사료 보다는 맛이 없지만 허기진 배를 채우기에는 안성맞춤이다.

 자꾸 그 여자가 신경쓰인다.

 사료를 못 먹어서가 아니다. 그냥 신경 쓰인다. 내일은 그녀를 한번 찾아봐야 겠다. 

'Hun Site > 창작 소설' 카테고리의 다른 글

간택(벤치의 그녀(3))  (0) 2016.08.16
간택(벤치의 그녀(2))  (0) 2016.08.10

+ Recent posts