๊ธฐ๋ฅ ์์ฒญ, /dev/shm์ ํฌ๊ธฐ๋ฅผ ํ์ธํ์ฌ mmap ํฌ๊ธฐ์ ์ผ์นํ๋์ง ํ์ธํ์ญ์์ค. ์ ๊ฒฝ์ฐ์๋ ๋์ปค ์ปจํ ์ด๋ ๋ด๋ถ์์ R์ ์ฌ์ฉํ๊ณ ์์๊ณ /dev/shm์ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ 64M์ ๋๋ค. ์ฝ๋๊ฐ ํ์ดํ ์คํธ๋ฆผ์์ mmap์ ์ํํ ๋(์: hadoop fs -cat /myfile.csv) ํ์ดํ์์ mmap์ผ๋ก shm ํฌ๊ธฐ ๋ฐ์ดํธ๋ง ์ฝ์ต๋๋ค. ์ ์์ผ๋ก ์์ฌ๋๋ C API๋ฅผ ํตํด ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ fread๊ฐ ํ์ผ ํ์์ ๋ํด ๋ถํํ๋ ์ด์ ๋ฅผ ๋๋ฒ๊น ํ ๊ฒฐ๊ณผ data.table์ R ๋ฐ C ์ฝ๋๋ฅผ ์์ธํ ์ดํด๋ณด๊ณ ์ด ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋ณด๊ณ ๋ ์ค๋ฅ(๋ด ํ์ดํ๊ฐ ๋์ด์ง ์์น์ ๊ธฐ๋ฐํ ์์์ ๋ฉ์์ง):
(ERROR):Expected sep (',') but ' ' ends field 0 when detecting types from point 10: 14183667
์ด๊ฒ์ ๋ค์์ ์ํํ์ฌ ์ฌํํ ์ ์์ต๋๋ค.
์ฝ๋์์: https://github.com/Rdatatable/data.table/blob/master/src/fread.c
788ํ ์ฃผ๋ณ์์ ์๋ง๋ /dev/shm์ ํฌ๊ธฐ๋ฅผ ํ์ธํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฝ์ ํ์ผ๊ณผ ์ผ์นํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๋์ปค์ ๊ฒฝ์ฐ ์คํจํ ํ
์คํธ ์กฐ๊ฑด์ ์์ธํ ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
> dat.df3<-fread("/opt/cloudera/parcels/CDH/bin/hadoop fs -cat /user/tcederquist/tim_pop_comm_14_5 | head -3668850" ,sep=",", header=TRUE, verbose=TRUE)
Input contains no \n. Taking this to be a filename to open
File opened, filesize is 0.062500 GB.
Memory mapping ... ok
....basic output
Type codes (point 8): 1111
Type codes (point 9): 1111
(ERROR):Expected sep (',') but ' ' ends field 0 when detecting types from point 10: 14183667
์์ ๊ฒฐ๊ณผ:
File opened, filesize is 0.373524 GB.
๋ํ ์คํจํ ๋ ๋ด๋ถ์ ์ผ๋ก ๋ผ์ธ # ๋ฐ ์คํจ ์ ๊ธฐํ ์ ์ฉํ ์ ๋ณด๋ฅผ ์๊ณ ์์ต๋๋ค. ์ฅํฉํ ํ๋๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๊ธฐ ์ ์ ์์ผ๋ก ๊ฐ์ 0์ผ๋ก ๋ง์ถฐ์ผ ํ์ต๋๋ค. ์ผ๋ฐ ์ค๋ฅ ๋ฉ์์ง์ ํ #์ด ํ์๋๋ฉด ์ข์ ๊ฒ์ ๋๋ค. vebose=T๋ ์ด ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ ๊ตฌ๋ถ ๊ธฐํธ์ ์๋ฅผ ๊ณ์ฐํ ๋ ์์น๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ค๋ฅ ์ ์ ์ฉํ ์ถ๋ ฅ์ด ๋ ๊ฒ์ ๋๋ค(ํ์ผ์ 20M ๋ ์ฝ๋๊ฐ ์๋ค๋ ๊ฒ์ ์์๊ธฐ ๋๋ฌธ์).
Count of eol: 3668839 (including 0 at the end)
nrow = MIN( nsep [11006514] / (ncol [4] -1), neol [3668839] - endblanks [0] ) = 3668838
์ด์ ๋์ผํ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ ์ฌ๋์ ๊ฒฝ์ฐ /dev/shm์ด ๋๋ฌด ์์ ๊ฒฝ์ฐ ์ปจํ ์ด๋ ๋๋ OS์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ด ๋จ๊ธฐ ์์ ์ ๋๋ค. ์ผ๋ฐ์ ์ธ ์ต์ OS๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ์ 50%๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ด 64G amazon ec2 ์ธ์คํด์ค์์ ๋ค์์ ์ฌ์ฉํ๋๋ก ๋์ปค ์ปจํ ์ด๋๋ฅผ ์ค์ ํ์ต๋๋ค.
docker run --shm-size="30g" ... other stuff ...
๋์. ๋ฏธ์ํฉ๋๋ค.
dev์ ์ต๊ทผ ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์คํ ๋ช ๋ น ์ ๋ ฅ์ ์ถ๋ ฅ์ ๋จ ๋์คํฌ(/dev/shm)๊ฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ์๋ํ ๋๋ ๋ ๋น ๋ฅด์ง๋ง ๋๋ฌด ๋ง์ ์ฅ์น ๊ฐ๋ ์ฐธ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์: #1139 ๋ฐ zUMI/19. ๋ณด๊ณ ํด ์ฃผ์ Kyle Chung์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ด์ ํ์ค tempdir()์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋จ ๋์คํฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด TEMPDIR์ /dev/shm์ผ๋ก ์ค์ ํ์ญ์์ค. ?tempdir์ ์ฐธ์กฐํ์ญ์์ค.
dev 1.10.5๋ฅผ ์๋ํ๊ณ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์ ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค.
์ฌ๋ฌ๋ถ, ์ ๊ฐ zUMIS/19 ์ ๊ณ ํ์ต๋๋ค. ๋๋ ๋น์ ์ dev 1.10.5๋ฅผ ์๋ํ๊ณ ์๋ฒฝํ๊ฒ ์๋ํฉ๋๋ค. ์ํ์ด ์๋ค์!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฌ๋ฌ๋ถ, ์ ๊ฐ zUMIS/19 ์ ๊ณ ํ์ต๋๋ค. ๋๋ ๋น์ ์ dev 1.10.5๋ฅผ ์๋ํ๊ณ ์๋ฒฝํ๊ฒ ์๋ํฉ๋๋ค. ์ํ์ด ์๋ค์!