반응형

지난 시간동안 우리는 하둡을 설치와 예제 실현을 통해 정상적으로 인스톨됨을 확인한 바가 있다.

2018/02/10 - [프로그래밍발전소 ♫/Hadoop발전소♫] - OSX에 Hadoop 설치하기 (ver 1)

2018/02/11 - [분류 전체보기] - OSX에 Hadoop 설치하기 (ver 2)

이번에는 하둡용 어플을 만들어보기전에 우리가 지지고볶고 해야될 데이터가 필요하기 때문에

데이터를 다운받아보도록합시다. 

stat-computing.org에서 Download the Data를 클릭하시고~

그럼 1987~2008까지의 데이터들을 다운받아야겠죠? 허나 수기로 일일이 다운받는다면..

무슨 프로그래밍하는 사람의로써의 의미가 있겠습니까..

저번에 써먹었던 wget 명령어를 활용해 쉘을 만들어봅시다.


  1 #!/bin/sh

  2 

  3 for((i=1987; i<=2009;i++))

  4 do

  5 wget http://stat-computing.org/dataexpo/2009/${i}.csv.bz2

  6 done

~                                                                               

~                                                                               

~                                                                               

~                                                                               

위에같이 for문으로 1987~2009까지 지정해주고 wget메소드를 활용하고 중간에 파라미터를 집어넣어서 저 쉘을 실행시키면 

설정해준 기간까지의 데이터를 다운받게끔 진행합시다.  실행하기전에 chmod 777로 실행권한을 줘야합니다.                                                                              

==================================================================================================


~                                        

LoganLeeui-MacBook-Pro:hadoop Logan$ ./download.sh 

--2018-02-11 14:54:05--  http://stat-computing.org/dataexpo/2009/1987.csv.bz2

Resolving stat-computing.org... 54.231.168.223

Connecting to stat-computing.org|54.231.168.223|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 12652442 (12M) [application/x-bzip2]


Saving to: '1987.csv.bz2'


1987.csv.bz2           100%[============================>]  12.07M  18.1MB/s    in 0.7s    


2018-02-11 14:54:07 (18.1 MB/s) - '1987.csv.bz2' saved [12652442/12652442]


--2018-02-11 14:54:07--  http://stat-computing.org/dataexpo/2009/1988.csv.bz2

Resolving stat-computing.org... 54.231.168.223

Connecting to stat-computing.org|54.231.168.223|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 49499025 (47M) [application/x-bzip2]

Saving to: '1988.csv.bz2'


1988.csv.bz2           100%[============================>]  47.21M   305KB/s    in 69s     


2018-02-11 14:55:16 (701 KB/s) - '1988.csv.bz2' saved [49499025/49499025]


--2018-02-11 14:55:16--  http://stat-computing.org/dataexpo/2009/1989.csv.bz2

Resolving stat-computing.org... 52.218.200.91

Connecting to stat-computing.org|52.218.200.91|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 49202298 (47M) [application/x-bzip2]

Saving to: '1989.csv.bz2'


1989.csv.bz2           100%[============================>]  46.92M   712KB/s    in 32s     


2018-02-11 14:55:49 (1.45 MB/s) - '1989.csv.bz2' saved [49202298/49202298]


--2018-02-11 14:55:49--  http://stat-computing.org/dataexpo/2009/1990.csv.bz2

Resolving stat-computing.org... 52.218.208.107

Connecting to stat-computing.org|52.218.208.107|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 52041322 (50M) [application/x-bzip2]

Saving to: '1990.csv.bz2'


1990.csv.bz2           100%[============================>]  49.63M  1.79MB/s    in 21s     


2018-02-11 14:56:11 (2.36 MB/s) - '1990.csv.bz2' saved [52041322/52041322]


--2018-02-11 14:56:11--  http://stat-computing.org/dataexpo/2009/1991.csv.bz2

Resolving stat-computing.org... 54.231.168.215

Connecting to stat-computing.org|54.231.168.215|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 49877448 (48M) [application/x-bzip2]

Saving to: '1991.csv.bz2'


1991.csv.bz2           100%[============================>]  47.57M   555KB/s    in 71s     


2018-02-11 14:57:23 (686 KB/s) - '1991.csv.bz2' saved [49877448/49877448]


--2018-02-11 14:57:23--  http://stat-computing.org/dataexpo/2009/1992.csv.bz2

Resolving stat-computing.org... 52.218.201.35

Connecting to stat-computing.org|52.218.201.35|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 50040946 (48M) [application/x-bzip2]

Saving to: '1992.csv.bz2'


1992.csv.bz2           100%[============================>]  47.72M  1.67MB/s    in 23s     


2018-02-11 14:57:46 (2.08 MB/s) - '1992.csv.bz2' saved [50040946/50040946]


--2018-02-11 14:57:46--  http://stat-computing.org/dataexpo/2009/1993.csv.bz2

Resolving stat-computing.org... 54.231.168.167

Connecting to stat-computing.org|54.231.168.167|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 50111774 (48M) [application/x-bzip2]

Saving to: '1993.csv.bz2'


1993.csv.bz2           100%[============================>]  47.79M   716KB/s    in 68s     


2018-02-11 14:58:55 (722 KB/s) - '1993.csv.bz2' saved [50111774/50111774]


--2018-02-11 14:58:55--  http://stat-computing.org/dataexpo/2009/1994.csv.bz2

Resolving stat-computing.org... 52.218.193.179

Connecting to stat-computing.org|52.218.193.179|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 51123887 (49M) [application/x-bzip2]

Saving to: '1994.csv.bz2'


1994.csv.bz2           100%[============================>]  48.75M   761KB/s    in 27s     


2018-02-11 14:59:22 (1.80 MB/s) - '1994.csv.bz2' saved [51123887/51123887]


--2018-02-11 14:59:23--  http://stat-computing.org/dataexpo/2009/1995.csv.bz2

Resolving stat-computing.org... 54.231.184.167

Connecting to stat-computing.org|54.231.184.167|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 74881752 (71M) [application/x-bzip2]

Saving to: '1995.csv.bz2'


1995.csv.bz2           100%[============================>]  71.41M   938KB/s    in 87s     


2018-02-11 15:00:51 (839 KB/s) - '1995.csv.bz2' saved [74881752/74881752]


--2018-02-11 15:00:51--  http://stat-computing.org/dataexpo/2009/1996.csv.bz2

Resolving stat-computing.org... 52.218.200.99

Connecting to stat-computing.org|52.218.200.99|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 75887707 (72M) [application/x-bzip2]

Saving to: '1996.csv.bz2'


1996.csv.bz2           100%[============================>]  72.37M  2.15MB/s    in 56s     


2018-02-11 15:01:48 (1.28 MB/s) - '1996.csv.bz2' saved [75887707/75887707]


--2018-02-11 15:01:48--  http://stat-computing.org/dataexpo/2009/1997.csv.bz2

Resolving stat-computing.org... 52.218.192.235

Connecting to stat-computing.org|52.218.192.235|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 76705687 (73M) [application/x-bzip2]

Saving to: '1997.csv.bz2'


1997.csv.bz2           100%[============================>]  73.15M   976KB/s    in 39s     


2018-02-11 15:02:27 (1.87 MB/s) - '1997.csv.bz2' saved [76705687/76705687]


--2018-02-11 15:02:27--  http://stat-computing.org/dataexpo/2009/1998.csv.bz2

Resolving stat-computing.org... 52.218.128.15

Connecting to stat-computing.org|52.218.128.15|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 76683506 (73M) [application/x-bzip2]

Saving to: '1998.csv.bz2'


1998.csv.bz2           100%[============================>]  73.13M   249KB/s    in 2m 8s   


2018-02-11 15:04:36 (585 KB/s) - '1998.csv.bz2' saved [76683506/76683506]


--2018-02-11 15:04:36--  http://stat-computing.org/dataexpo/2009/1999.csv.bz2

Resolving stat-computing.org... 52.218.193.219

Connecting to stat-computing.org|52.218.193.219|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 79449438 (76M) [application/x-bzip2]

Saving to: '1999.csv.bz2'


1999.csv.bz2           100%[============================>]  75.77M  1.59MB/s    in 53s     


2018-02-11 15:05:30 (1.43 MB/s) - '1999.csv.bz2' saved [79449438/79449438]


--2018-02-11 15:05:30--  http://stat-computing.org/dataexpo/2009/2000.csv.bz2

Resolving stat-computing.org... 52.218.192.211

Connecting to stat-computing.org|52.218.192.211|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 82537924 (79M) [application/x-bzip2]

Saving to: '2000.csv.bz2'


2000.csv.bz2           100%[============================>]  78.71M  2.95MB/s    in 62s     


2018-02-11 15:06:32 (1.28 MB/s) - '2000.csv.bz2' saved [82537924/82537924]


--2018-02-11 15:06:32--  http://stat-computing.org/dataexpo/2009/2001.csv.bz2

Resolving stat-computing.org... 52.218.144.59

Connecting to stat-computing.org|52.218.144.59|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 83478700 (80M) [application/x-bzip2]

Saving to: '2001.csv.bz2'


2001.csv.bz2           100%[============================>]  79.61M   539KB/s    in 5m 14s  


2018-02-11 15:11:47 (259 KB/s) - '2001.csv.bz2' saved [83478700/83478700]


--2018-02-11 15:11:47--  http://stat-computing.org/dataexpo/2009/2002.csv.bz2

Resolving stat-computing.org... 54.231.168.163

Connecting to stat-computing.org|54.231.168.163|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 75907218 (72M) [application/x-bzip2]

Saving to: '2002.csv.bz2'


2002.csv.bz2           100%[============================>]  72.39M   778KB/s    in 2m 12s  


2018-02-11 15:14:00 (560 KB/s) - '2002.csv.bz2' saved [75907218/75907218]


--2018-02-11 15:14:00--  http://stat-computing.org/dataexpo/2009/2003.csv.bz2

Resolving stat-computing.org... 52.218.192.59

Connecting to stat-computing.org|52.218.192.59|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 95326801 (91M) [application/x-bzip2]

Saving to: '2003.csv.bz2'


2003.csv.bz2            66%[==================>          ]  60.82M  1.14MB/s    eta 14s

// 보시는것과 같이 다운로드가 진행되고있음을 알 수 있습니다. 압축형식은 bz2 형식이네요/.




==================================================================================================


이제 압축을 풀어봅시다.

 bzip2 -d *.bz2

LoganLeeui-MacBook-Pro:original Logan$ ls

1987.csv 1990.csv 1993.csv 1996.csv 1999.csv 2002.csv 2005.csv 2008.csv

1988.csv 1991.csv 1994.csv 1997.csv 2000.csv 2003.csv 2006.csv

1989.csv 1992.csv 1995.csv 1998.csv 2001.csv 2004.csv 2007.csv

일단 명령어를 실행하면 시간이 걸립니다.
터미널 텝을 열어 확인해본다면, 풀리고 있는 중이라는 걸 아실수있습니다.

==================================================================================================

 head -n 10 1987.csv 

Year,Month,DayofMonth,DayOfWeek,DepTime,CRSDepTime,ArrTime,CRSArrTime,UniqueCarrier,FlightNum,TailNum,ActualElapsedTime,CRSElapsedTime,AirTime,ArrDelay,DepDelay,Origin,Dest,Distance,TaxiIn,TaxiOut,Cancelled,CancellationCode,Diverted,CarrierDelay,WeatherDelay,NASDelay,SecurityDelay,LateAircraftDelay

1987,10,14,3,741,730,912,849,PS,1451,NA,91,79,NA,23,11,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,15,4,729,730,903,849,PS,1451,NA,94,79,NA,14,-1,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,17,6,741,730,918,849,PS,1451,NA,97,79,NA,29,11,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,18,7,729,730,847,849,PS,1451,NA,78,79,NA,-2,-1,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,19,1,749,730,922,849,PS,1451,NA,93,79,NA,33,19,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,21,3,728,730,848,849,PS,1451,NA,80,79,NA,-1,-2,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,22,4,728,730,852,849,PS,1451,NA,84,79,NA,3,-2,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,23,5,731,730,902,849,PS,1451,NA,91,79,NA,13,1,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,24,6,744,730,908,849,PS,1451,NA,84,79,NA,19,14,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

파일을 살펴보면 1줄에 각각의 데이터가 무엇을 의미하고있는지를 가지고 있습니다.
허나, 데이터 처리과정 중에 에러를 야기할 수 있는 사항이기 때문에 지우도록합시다.

==================================================================================================

1987~2008의 파일들을 만져야하니 커맨드 한줄로도 가능하긴합니다. 
sed -e '1d' *.csv > *_modified.csv  처럼...(하지만 이렇게 진행한다면, 제대로 진행되지않습니다. 궁금하신분들은 직접한번!)
허나 추후에 재사용을 위해 쉘을 만들어줍니다.

1 #!/bin/sh

  2 

  3 for((i=1987; i<=2008; i++))

  4 do

  5     sed -e '1d' ${i}.csv > ${i}_modi.csv

  6 done

실행후에 디렉토리를 살펴봅시다.

==================================================================================================

 ls

1987.csv      1991.csv      1995.csv      1999.csv      2003.csv      2007.csv

1987_modi.csv 1991_modi.csv 1995_modi.csv 1999_modi.csv 2003_modi.csv 2007_modi.csv

1988.csv      1992.csv      1996.csv      2000.csv      2004.csv      2008.csv

1988_modi.csv 1992_modi.csv 1996_modi.csv 2000_modi.csv 2004_modi.csv 2008_modi.csv

1989.csv      1993.csv      1997.csv      2001.csv      2005.csv      sed.sh

1989_modi.csv 1993_modi.csv 1997_modi.csv 2001_modi.csv 2005_modi.csv

1990.csv      1994.csv      1998.csv      2002.csv      2006.csv

1990_modi.csv 1994_modi.csv 1998_modi.csv 2002_modi.csv 2006_modi.csv


짜잔,
==================================================================================================

이제 원본유지를 위해 나누어줍시다.

ls

1987_modi.csv 1991_modi.csv 1995_modi.csv 1999_modi.csv 2003_modi.csv 2007_modi.csv

1988_modi.csv 1992_modi.csv 1996_modi.csv 2000_modi.csv 2004_modi.csv 2008_modi.csv

1989_modi.csv 1993_modi.csv 1997_modi.csv 2001_modi.csv 2005_modi.csv

1990_modi.csv 1994_modi.csv 1998_modi.csv 2002_modi.csv 2006_modi.csv

==================================================================================================

hadoop fs -mkdir input


hdfs에 데이터를 집어넣을 폴더를 만들어줍니다.

==================================================================================================


fs -put ~/dataexpo/original/*.csv input

LoganLeeui-MacBook-Pro:~ Logan$ hadoop fs -ls

Found 4 items

drwxr-xr-x   - Logan supergroup          0 2018-02-10 19:52 /user/Logan/conf

drwxr-xr-x   - Logan supergroup          0 2018-02-14 03:07 /user/Logan/input

drwxr-xr-x   - Logan supergroup          0 2018-02-10 19:52 /user/Logan/output_

drwxr-xr-x   - Logan supergroup          0 2018-02-11 09:38 /user/Logan/output_2

명령어로 hdfs에 업로드해봅시다. 

==================================================================================================

hadoop fs -lsr

drwxr-xr-x   - Logan supergroup          0 2018-02-15 15:01 /user/Logan/input

-rw-r--r--   1 Logan supergroup  127162642 2018-02-15 15:00 /user/Logan/input/1987_modi.csv

-rw-r--r--   1 Logan supergroup  501039172 2018-02-15 15:00 /user/Logan/input/1988_modi.csv

-rw-r--r--   1 Logan supergroup  486518521 2018-02-15 15:00 /user/Logan/input/1989_modi.csv

-rw-r--r--   1 Logan supergroup  509194387 2018-02-15 15:00 /user/Logan/input/1990_modi.csv

-rw-r--r--   1 Logan supergroup  491209793 2018-02-15 15:00 /user/Logan/input/1991_modi.csv

-rw-r--r--   1 Logan supergroup  492313431 2018-02-15 15:00 /user/Logan/input/1992_modi.csv

-rw-r--r--   1 Logan supergroup  490753352 2018-02-15 15:00 /user/Logan/input/1993_modi.csv

-rw-r--r--   1 Logan supergroup  501558365 2018-02-15 15:00 /user/Logan/input/1994_modi.csv

-rw-r--r--   1 Logan supergroup  530751268 2018-02-15 15:00 /user/Logan/input/1995_modi.csv

-rw-r--r--   1 Logan supergroup  533922063 2018-02-15 15:00 /user/Logan/input/1996_modi.csv

-rw-r--r--   1 Logan supergroup  540347561 2018-02-15 15:00 /user/Logan/input/1997_modi.csv

-rw-r--r--   1 Logan supergroup  538432575 2018-02-15 15:00 /user/Logan/input/1998_modi.csv

-rw-r--r--   1 Logan supergroup  552925722 2018-02-15 15:00 /user/Logan/input/1999_modi.csv

-rw-r--r--   1 Logan supergroup  570151313 2018-02-15 15:00 /user/Logan/input/2000_modi.csv

-rw-r--r--   1 Logan supergroup  600411162 2018-02-15 15:00 /user/Logan/input/2001_modi.csv

-rw-r--r--   1 Logan supergroup  530506713 2018-02-15 15:01 /user/Logan/input/2002_modi.csv

-rw-r--r--   1 Logan supergroup  626744942 2018-02-15 15:01 /user/Logan/input/2003_modi.csv

-rw-r--r--   1 Logan supergroup  669878813 2018-02-15 15:01 /user/Logan/input/2004_modi.csv

-rw-r--r--   1 Logan supergroup  671026965 2018-02-15 15:01 /user/Logan/input/2005_modi.csv

-rw-r--r--   1 Logan supergroup  672067796 2018-02-15 15:01 /user/Logan/input/2006_modi.csv

-rw-r--r--   1 Logan supergroup  702877893 2018-02-15 15:01 /user/Logan/input/2007_modi.csv

-rw-r--r--   1 Logan supergroup  689413044 2018-02-15 15:01 /user/Logan/input/2008_modi.csv



-lsr로 확인해보고 이상이 없으면 클리어!

반응형
by 발전소장 에르 :) 2018. 2. 15. 15:03
반응형

hdfs에 hadoop-evn.sh을 넣어놓고 wordcount 예제를 돌려보자.


LoganLeeui-MacBook-Pro:hadoop Logan$ hadoop jar hadoop-examples-1.2.1.jar wordcount conf/hadoop-env.sh output

18/02/10 03:25:11 INFO input.FileInputFormat: Total input paths to process : 1

18/02/10 03:25:11 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

18/02/10 03:25:11 WARN snappy.LoadSnappy: Snappy native library not loaded

18/02/10 03:25:11 INFO mapred.JobClient: Running job: job_201802100324_0001

18/02/10 03:25:12 INFO mapred.JobClient:  map 0% reduce 0%

18/02/10 03:25:15 INFO mapred.JobClient:  map 100% reduce 0%

18/02/10 03:32:44 INFO mapred.JobClient: Task Id : attempt_201802100324_0001_r_000000_0, Status : FAILED

Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.

18/02/10 03:32:44 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:32:44 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:40:14 INFO mapred.JobClient: Task Id : attempt_201802100324_0001_r_000000_1, Status : FAILED

Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.

18/02/10 03:40:14 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:40:14 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:47:45 INFO mapred.JobClient: Task Id : attempt_201802100324_0001_r_000000_2, Status : FAILED

Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.

18/02/10 03:47:45 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:47:45 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:55:18 INFO mapred.JobClient: Job complete: job_201802100324_0001

18/02/10 03:55:18 INFO mapred.JobClient: Counters: 20

18/02/10 03:55:18 INFO mapred.JobClient:   Map-Reduce Framework

18/02/10 03:55:18 INFO mapred.JobClient:     Combine output records=178

18/02/10 03:55:18 INFO mapred.JobClient:     Spilled Records=178

18/02/10 03:55:18 INFO mapred.JobClient:     Map output materialized bytes=3151

18/02/10 03:55:18 INFO mapred.JobClient:     Map input records=62

18/02/10 03:55:18 INFO mapred.JobClient:     SPLIT_RAW_BYTES=116

18/02/10 03:55:18 INFO mapred.JobClient:     Map output records=306

18/02/10 03:55:18 INFO mapred.JobClient:     Map output bytes=3856

18/02/10 03:55:18 INFO mapred.JobClient:     Combine input records=306

18/02/10 03:55:18 INFO mapred.JobClient:     Total committed heap usage (bytes)=179306496

18/02/10 03:55:18 INFO mapred.JobClient:   File Input Format Counters 

18/02/10 03:55:18 INFO mapred.JobClient:     Bytes Read=2676

18/02/10 03:55:18 INFO mapred.JobClient:   FileSystemCounters

18/02/10 03:55:18 INFO mapred.JobClient:     HDFS_BYTES_READ=2792

18/02/10 03:55:18 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=60256

18/02/10 03:55:18 INFO mapred.JobClient:   Job Counters 

18/02/10 03:55:18 INFO mapred.JobClient:     Launched map tasks=1

18/02/10 03:55:18 INFO mapred.JobClient:     Launched reduce tasks=4

18/02/10 03:55:18 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=7072

18/02/10 03:55:18 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0

18/02/10 03:55:18 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=3591

18/02/10 03:55:18 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0

18/02/10 03:55:18 INFO mapred.JobClient:     Failed reduce tasks=1

18/02/10 03:55:18 INFO mapred.JobClient:     Data-local map tasks=1

저번편을 참고하면, 마지막에 wordcount예제를 돌릴려는 도중에 에러가 발생했었다.

Task Id : attempt_201802100324_0001_r_000000_0, Status : FAILED

Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.

이 에러는 보통 쓰레드를 초과했을 때 나는거라고 하는데 용량이 얼마하지도않는 hadoop-env.sh에서 쓰레드 초과가 나는건 아니니,

말이 안되는것이고 
WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

문제점은 이놈이 확실해 보인다. 흔히들 말하는 map 100% reduce 0% 에러인데, 

mapper에서 reducer로 처리된 데이터를 보내는 과정 중에 shuffle이라는 과정을 거치게되는데 

이때 리듀서와 통신 에러가 나는 것이다.

그럼 뭐가 문제인걸까...ssh localhost로 해보았을 때, 문제가 없다...

그렇다면 블로깅하면서 설정파일을 내가 만졌을까? 그건 아니지싶다.

무언가가 엉킨것같은데 모르겠다. 고로 필자는 하둡을 지웠다.

hadoop-data도 지웠고

추후 설정에서는 hadoop-data폴더를 hadoop-1.2.1폴더안에 넣었다.

그리고 설치편에서 진행했던 과정을 모두 진행하고 wordcount를 실행해보았다.


LoganLeeui-MacBook-Pro:hadoop Logan$ hadoop jar hadoop-examples-1.2.1.jar wordcount conf/hadoop-env.sh output_

18/02/10 19:52:25 INFO input.FileInputFormat: Total input paths to process : 1

18/02/10 19:52:25 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

18/02/10 19:52:25 WARN snappy.LoadSnappy: Snappy native library not loaded

18/02/10 19:52:25 INFO mapred.JobClient: Running job: job_201802101951_0001

18/02/10 19:52:26 INFO mapred.JobClient:  map 0% reduce 0%

18/02/10 19:52:29 INFO mapred.JobClient:  map 100% reduce 0%

18/02/10 19:52:36 INFO mapred.JobClient:  map 100% reduce 33%

18/02/10 19:52:38 INFO mapred.JobClient:  map 100% reduce 100%

18/02/10 19:52:38 INFO mapred.JobClient: Job complete: job_201802101951_0001

18/02/10 19:52:38 INFO mapred.JobClient: Counters: 26

18/02/10 19:52:38 INFO mapred.JobClient:   Map-Reduce Framework

18/02/10 19:52:38 INFO mapred.JobClient:     Spilled Records=346

18/02/10 19:52:38 INFO mapred.JobClient:     Map output materialized bytes=2979

18/02/10 19:52:38 INFO mapred.JobClient:     Reduce input records=173

18/02/10 19:52:38 INFO mapred.JobClient:     Map input records=59

18/02/10 19:52:38 INFO mapred.JobClient:     SPLIT_RAW_BYTES=116

18/02/10 19:52:38 INFO mapred.JobClient:     Map output bytes=3700

18/02/10 19:52:38 INFO mapred.JobClient:     Reduce shuffle bytes=2979

18/02/10 19:52:38 INFO mapred.JobClient:     Reduce input groups=173

18/02/10 19:52:38 INFO mapred.JobClient:     Combine output records=173

18/02/10 19:52:38 INFO mapred.JobClient:     Reduce output records=173

18/02/10 19:52:38 INFO mapred.JobClient:     Map output records=302

18/02/10 19:52:38 INFO mapred.JobClient:     Combine input records=302

18/02/10 19:52:38 INFO mapred.JobClient:     Total committed heap usage (bytes)=308281344

18/02/10 19:52:38 INFO mapred.JobClient:   File Input Format Counters 

18/02/10 19:52:38 INFO mapred.JobClient:     Bytes Read=2532

18/02/10 19:52:38 INFO mapred.JobClient:   FileSystemCounters

18/02/10 19:52:38 INFO mapred.JobClient:     HDFS_BYTES_READ=2648

18/02/10 19:52:38 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=127735

18/02/10 19:52:38 INFO mapred.JobClient:     FILE_BYTES_READ=2979

18/02/10 19:52:38 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=2283

18/02/10 19:52:38 INFO mapred.JobClient:   Job Counters 

18/02/10 19:52:38 INFO mapred.JobClient:     Launched map tasks=1

18/02/10 19:52:38 INFO mapred.JobClient:     Launched reduce tasks=1

18/02/10 19:52:38 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=8086

18/02/10 19:52:38 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0

18/02/10 19:52:38 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=3033

18/02/10 19:52:38 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0

18/02/10 19:52:38 INFO mapred.JobClient:     Data-local map tasks=1

18/02/10 19:52:38 INFO mapred.JobClient:   File Output Format Counters 

18/02/10 19:52:38 INFO mapred.JobClient:     Bytes Written=2283

LoganLeeui-MacBook-Pro:hadoop Logan$ hadoop jar hadoop-examples-1.2.1.jar wordcount conf/hadoop-env.sh output_2

18/02/11 09:37:54 INFO input.FileInputFormat: Total input paths to process : 1

18/02/11 09:37:54 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

18/02/11 09:37:54 WARN snappy.LoadSnappy: Snappy native library not loaded

18/02/11 09:37:54 INFO mapred.JobClient: Running job: job_201802101951_0002

18/02/11 09:37:55 INFO mapred.JobClient:  map 0% reduce 0%

18/02/11 09:37:58 INFO mapred.JobClient:  map 100% reduce 0%

18/02/11 09:38:05 INFO mapred.JobClient:  map 100% reduce 33%

18/02/11 09:38:06 INFO mapred.JobClient:  map 100% reduce 100%

18/02/11 09:38:08 INFO mapred.JobClient: Job complete: job_201802101951_0002

18/02/11 09:38:08 INFO mapred.JobClient: Counters: 26

18/02/11 09:38:08 INFO mapred.JobClient:   Map-Reduce Framework

18/02/11 09:38:08 INFO mapred.JobClient:     Spilled Records=346

18/02/11 09:38:08 INFO mapred.JobClient:     Map output materialized bytes=2979

18/02/11 09:38:08 INFO mapred.JobClient:     Reduce input records=173

18/02/11 09:38:08 INFO mapred.JobClient:     Map input records=59

18/02/11 09:38:08 INFO mapred.JobClient:     SPLIT_RAW_BYTES=116

18/02/11 09:38:08 INFO mapred.JobClient:     Map output bytes=3700

18/02/11 09:38:08 INFO mapred.JobClient:     Reduce shuffle bytes=2979

18/02/11 09:38:08 INFO mapred.JobClient:     Reduce input groups=173

18/02/11 09:38:08 INFO mapred.JobClient:     Combine output records=173

18/02/11 09:38:08 INFO mapred.JobClient:     Reduce output records=173

18/02/11 09:38:08 INFO mapred.JobClient:     Map output records=302

18/02/11 09:38:08 INFO mapred.JobClient:     Combine input records=302

18/02/11 09:38:08 INFO mapred.JobClient:     Total committed heap usage (bytes)=308281344

18/02/11 09:38:08 INFO mapred.JobClient:   File Input Format Counters 

18/02/11 09:38:08 INFO mapred.JobClient:     Bytes Read=2532

18/02/11 09:38:08 INFO mapred.JobClient:   FileSystemCounters

18/02/11 09:38:08 INFO mapred.JobClient:     HDFS_BYTES_READ=2648

18/02/11 09:38:08 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=127733

18/02/11 09:38:08 INFO mapred.JobClient:     FILE_BYTES_READ=2979

18/02/11 09:38:08 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=2283

18/02/11 09:38:08 INFO mapred.JobClient:   Job Counters 

18/02/11 09:38:08 INFO mapred.JobClient:     Launched map tasks=1

18/02/11 09:38:08 INFO mapred.JobClient:     Launched reduce tasks=1

18/02/11 09:38:08 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=8102

18/02/11 09:38:08 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0

18/02/11 09:38:08 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=3325

18/02/11 09:38:08 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0

18/02/11 09:38:08 INFO mapred.JobClient:     Data-local map tasks=1

18/02/11 09:38:08 INFO mapred.JobClient:   File Output Format Counters 

18/02/11 09:38:08 INFO mapred.JobClient:     Bytes Written=2283

결과는 드디어 성공이었다.

hadoop fs -lsr

drwxr-xr-x   - Logan supergroup          0 2018-02-10 19:52 /user/Logan/conf

-rw-r--r--   1 Logan supergroup       2532 2018-02-10 19:52 /user/Logan/conf/hadoop-env.sh

drwxr-xr-x   - Logan supergroup          0 2018-02-10 19:52 /user/Logan/output_

-rw-r--r--   1 Logan supergroup          0 2018-02-10 19:52 /user/Logan/output_/_SUCCESS

drwxr-xr-x   - Logan supergroup          0 2018-02-10 19:52 /user/Logan/output_/_logs

drwxr-xr-x   - Logan supergroup          0 2018-02-10 19:52 /user/Logan/output_/_logs/history

-rw-r--r--   1 Logan supergroup      11699 2018-02-10 19:52 /user/Logan/output_/_logs/history/job_201802101951_0001_1518259945223_Logan_word+count

-rw-r--r--   1 Logan supergroup      53374 2018-02-10 19:52 /user/Logan/output_/_logs/history/job_201802101951_0001_conf.xml

-rw-r--r--   1 Logan supergroup       2283 2018-02-10 19:52 /user/Logan/output_/part-r-00000


 hadoop fs -cat output_/part-r-00000

# 38

$HADOOP_BALANCER_OPTS" 1

$HADOOP_DATANODE_OPTS" 1

$HADOOP_HOME/conf/slaves 1

$HADOOP_HOME/logs 1

$HADOOP_JOBTRACKER_OPTS" 1

$HADOOP_NAMENODE_OPTS" 1

$HADOOP_SECONDARYNAMENODE_OPTS" 1

$USER 1

'man 1

(fs, 1

-o 1

/tmp 1

1000. 1

A 1

All 1

CLASSPATH 1

Command 1

ConnectTimeout=1 1

Default 1

Empty 2

Extra 3

File 1

HADOOP_BALANCER_OPTS="-Dcom.sun.management.jmxremote 1

HADOOP_CLASSPATH= 1

HADOOP_CLIENT_OPTS 1

HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote 1

HADOOP_HEAPSIZE=2000 1

HADOOP_HOME_WARN_SUPPRESS=1 1

HADOOP_IDENT_STRING=$USER 1

HADOOP_JOBTRACKER_OPTS="-Dcom.sun.management.jmxremote 1

HADOOP_LOG_DIR=${HADOOP_HOME}/logs 1

HADOOP_MASTER=master:/home/$USER/src/hadoop 1

HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote 1

HADOOP_NICENESS=10 1

HADOOP_OPTS 1

HADOOP_OPTS=-server 1

HADOOP_PID_DIR=/var/hadoop/pids 1

HADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote 1

HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves 1

HADOOP_SLAVE_SLEEP=0.1 1

HADOOP_SSH_OPTS="-o 1

HADOOP_TASKTRACKER_OPTS= 1

Hadoop-specific 1

JAVA_HOME 1

JAVA_HOME. 1

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home 1

Java 2

MB. 1

NOTE: 1

Optional. 1

Otherwise 1

Required. 1

Seconds 1

See 1

SendEnv=HADOOP_CONF_DIR" 1

Set 1

Suppessing 1

The 6

This 1

Unset 2

Warning 1

When 1

Where 1

a 3

amount 1

appended 1

applies 1

are 4

arrive 1

attack. 1

be 4

best 1

between 1

by 9

can 4

clusters, 1

code 1

commands 1

commands. 1

configuration 1

correctly 1

daemon 1

daemons. 1

default. 8

defined 1

dfs, 1

directory 2

distcp 1

distributed 1

e.g., 1

elements. 1

environment 2

etc) 1

export 20

faster 1

file, 1

files 2

following 1

for 2

from. 1

fsck, 1

going 1

hadoop 2

hadoop. 1

heap 1

here. 1

host:path 1

hosts. 1

implementation 1

in 3

instance 1

is 5

it 2

java 1

large 1

log 1

master 1

maximum 1

multiple 1

naming 1

nice'. 1

nodes. 1

of 2

on 1

only 2

optional. 1

options 1

options. 2

others 1

otherwise 1

pid 1

potential 1

priority 1

processes. 1

remote 2

representing 1

required 1

rsync'd 1

rsyncs 1

run 1

running 1

runtime 1

scheduling 1

service 1

set 2

should 2

slave 3

sleep 1

so 1

specific 1

specified 1

ssh 1

stored. 2

string 1

symlink 1

than 1

that 3

the 4

them. 1

there 1

this 3

to 9

use, 1

use. 1

useful 1

users 1

variable 1

variables 1

when 1

where 2

where, 1

written 1


정상적으로 출력된다. 

궁금점이 있다면 댓글에 남겨주길 바란다.

반응형
by 발전소장 에르 :) 2018. 2. 11. 10:54
반응형

사양이 괜찮던 데스크탑에서 우분투 가상환경로 하둡 공부를 했었는데, 

수료 후에 집에 있는건 맥북 뿐인지라... 맥북에서라도 하둡을 공부하고자하여 설치할려고 했었으나

brew로 인스톨 시 알수없는 에러 때문에 무한히 삽질하다가,,, 다른 방법을 찾아 블로그에 기록으로 남겨

나와 같은 고통받는 사람이 그나마 좀 적었으면 하는 바람이다.

필자는 하둡1을 다운받을 예정이다.

(필자는 이미 설치를 완료하였기 때문에 이점을 유의하고 진행하길 바란다.)

(하둡 환경변수 또한 이미 설정되어있다.)


http://apache.tt.co.kr/hadoop/common/stable1/

위 주소에서 하둡을 다운받을 수 있다.

hadoop-1.2.1.tar.gz 링크의 주소를 복사해서 터미널에서 진행한다.


터미널에서 wget 명령어를 통해 해당 링크의 아이템을 다운받는데 물론 마우스클릭으로 받아도 상관은 없다.


쭈루루룩... 다운이 받아지는 중이고 

결과품은 홈 디렉토리에 위치하고있을것이다.

이제 압축을 풀어보자 

tar xzvf hadoop-1.2.1.tar.gz  

압축을 풀면 

hadoop-1.2.1이라는 폴더가 생기고

이 폴더에 심볼로 hadoop을 생성해주자

ln -s hadoop-1.2.1 hadoop

(이유는 나중에 환경변수 등등 일일이 -1.2.1을 타이핑해주기 귀찮기 때문에...)

자 이제 하둡설치가 끝났다.!

그럼 이제 환경설정을 담당해야한다.

하둡에는 3가지 모드가 있다.


●독립모드(Standalone mode) 

 데몬 프로세스가 동작하지 않고, 모든것이 단독 JVM 내에서 동작. 개발하는 동안 맵리듀스 프로그램을 동작시키기에 적합한데, 테스트 및 디버깅이 용이.

●가상분산모드(Pseudo-distributed mode) 

 하둡 데몬 프로세스가 로컬컴퓨터에서 동작하므로 작은 규모의 클러스터를 시뮬레이트 할 수 있다.

●완전분산모드(Fully distributed mode)

 하둡 데몬프로세스는 다수 컴퓨터로 구성된 그룹에서 동작한다.




독립모드에서는 hdfs가 필요없고 로컬에서 바로 진행된다.

우리는 몇대의 컴퓨터가 집에 있는 것도아니고 하둡에 대해 잘알아서 테스트 디버깅용으로 필요한것이 아니기 때문에

가상분산모드로 진행한다.

(따로 모드를 선택하는 장치나 옵션은 없다.

환경설정 내용에 따라 모드가 갈린다.)

내용으로 돌아와서 conf안에는 환결설정 파일들로 가득하다.

이중에서 우리가 만져야될 파일은

hadoop-env.sh

mapped-site.xml

slaves

masters

core-site.xml

hdfs-site.xml

총 6개이다.

차근차근히 따라오길 바라며, 처음 접한다면 수기로 직접 작성해보길 바란다.

=============================================

hadoop-env.sh에서 할일은 자바 경로를 잡아주는것과 실행시 일어날 워닝을 잡아주는 구문이나

라인11은 선택사항이다.

(자바설치 경로가 기억나지않는다면

위 명령어로 조회할 수 있다)

==================================================

core-site.xml

=========================================

hdfs-site.xml

8번은 복제옵션을 지칭하며 9번은 복사갯수를 정한다.

================================================

mapped-site.xml

잡트래커 옵션을 준다

==============================================

마지막으로 slaves와 masters에는 localhost라고 막 적는다.

================================================

실행전

hadoop namenode -format 명령어로 네임노드를 포맷시켜주고 실행하여야한다.


모든 설정이 정상적으로 이루어졌다면 start-all.sh을 실행시켜보라

로그를 보았을때 어디서 무엇이 실행되는지 보이지 않는가?

모든 노드들과 트래커들이 실행된 모습.

이제 예제를 실행시켜보고 문제가 없으면 사용에 준비는 끝났다.

hdfs에 hadoop-evn.sh을 넣어놓고 wordcount 예제를 돌려보자.


LoganLeeui-MacBook-Pro:hadoop Logan$ hadoop jar hadoop-examples-1.2.1.jar wordcount conf/hadoop-env.sh output

18/02/10 03:25:11 INFO input.FileInputFormat: Total input paths to process : 1

18/02/10 03:25:11 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

18/02/10 03:25:11 WARN snappy.LoadSnappy: Snappy native library not loaded

18/02/10 03:25:11 INFO mapred.JobClient: Running job: job_201802100324_0001

18/02/10 03:25:12 INFO mapred.JobClient:  map 0% reduce 0%

18/02/10 03:25:15 INFO mapred.JobClient:  map 100% reduce 0%

18/02/10 03:32:44 INFO mapred.JobClient: Task Id : attempt_201802100324_0001_r_000000_0, Status : FAILED

Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.

18/02/10 03:32:44 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:32:44 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:40:14 INFO mapred.JobClient: Task Id : attempt_201802100324_0001_r_000000_1, Status : FAILED

Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.

18/02/10 03:40:14 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:40:14 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:47:45 INFO mapred.JobClient: Task Id : attempt_201802100324_0001_r_000000_2, Status : FAILED

Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.

18/02/10 03:47:45 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:47:45 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:55:18 INFO mapred.JobClient: Job complete: job_201802100324_0001

18/02/10 03:55:18 INFO mapred.JobClient: Counters: 20

18/02/10 03:55:18 INFO mapred.JobClient:   Map-Reduce Framework

18/02/10 03:55:18 INFO mapred.JobClient:     Combine output records=178

18/02/10 03:55:18 INFO mapred.JobClient:     Spilled Records=178

18/02/10 03:55:18 INFO mapred.JobClient:     Map output materialized bytes=3151

18/02/10 03:55:18 INFO mapred.JobClient:     Map input records=62

18/02/10 03:55:18 INFO mapred.JobClient:     SPLIT_RAW_BYTES=116

18/02/10 03:55:18 INFO mapred.JobClient:     Map output records=306

18/02/10 03:55:18 INFO mapred.JobClient:     Map output bytes=3856

18/02/10 03:55:18 INFO mapred.JobClient:     Combine input records=306

18/02/10 03:55:18 INFO mapred.JobClient:     Total committed heap usage (bytes)=179306496

18/02/10 03:55:18 INFO mapred.JobClient:   File Input Format Counters 

18/02/10 03:55:18 INFO mapred.JobClient:     Bytes Read=2676

18/02/10 03:55:18 INFO mapred.JobClient:   FileSystemCounters

18/02/10 03:55:18 INFO mapred.JobClient:     HDFS_BYTES_READ=2792

18/02/10 03:55:18 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=60256

18/02/10 03:55:18 INFO mapred.JobClient:   Job Counters 

18/02/10 03:55:18 INFO mapred.JobClient:     Launched map tasks=1

18/02/10 03:55:18 INFO mapred.JobClient:     Launched reduce tasks=4

18/02/10 03:55:18 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=7072

18/02/10 03:55:18 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0

18/02/10 03:55:18 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=3591

18/02/10 03:55:18 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0

18/02/10 03:55:18 INFO mapred.JobClient:     Failed reduce tasks=1

18/02/10 03:55:18 INFO mapred.JobClient:     Data-local map tasks=1

mapper가 일을 끝내고 reducer한테 전해줄 때 통신에러가 있는 듯 하다...

(원래 안그랬는데 글 쓰다가 다시 생겼다...)

해결편 보러가기

반응형
by 발전소장 에르 :) 2018. 2. 10. 17:29
반응형

안녕하세요~ 에르의 생각발전소입니다 :)

이번 시간에 다뤄볼 주제는 " 내 맥북...어떻게 고칠까? " 인데요

센서고장 혹은 SMC 설정이 엉켜버린 경우 

조금의 과부하에도 맥북은 위기사항으로 인지하고 

펜은 쌩쌩 돌려버리는 경우가 있는데요.

RPM이 높아지면 높아질수록 소음은 커지게되며,

특히 도서관같은 정숙을 요구하는 장소에서는 민폐가 될 수 있겠죠.

그리고 이 프로그램의 장점은 한국어를 지원한다는 것!

다운받아볼까요?




위 링크를 따라가주세요 :)


링크를 타고 들어오셨다면 위와 같은 화면을 보실 수 있습니다.

지금 저희가 필요한 건 Macs Fan Control 이라는 앱입니다.

여러분의 컴퓨터는 MAC이므로, 우측 하단에 " Download for Mac "을 클릭해여 다운로드받아주세요.


다운로드를 완료하셨으면 Downloads 폴더에 Mac Fan Control 이 보이시나요?

클릭해주시고 설치해주시면 됩니다 :)


그럼 어플리케이션 폴더에서나 F4를 눌러 대쉬보드에서 확인가능하십니다.

얘를 실행시켜주세요.

아무것도 안뜬다고 당황하지마시고~


 우측상단에 보시면  아이콘이 보이실겁니다.

이 아이콘을 클릭해주세요.



저는 고정값을 5000으로 설정해놓았답니다. 맥북이 아주 냉골이에요..

각설하고, Macs Fan Contorl 열기를 클릭해주세요.



위와 같은 창이 뜨며 우측에는 온도센서를 통한 각 파트의 온도를 확인할 수 있으며,

좌측에서는 팬의 설정을 만지실 수 있습니다.

편리한 환경을 위해서 환경설정을 클릭해주세요.


아, 미리  한국어로 언어를 바꿔놓은터라 이렇게 보이실텐데 

처음 다운받으면 영어로 뜬답니다.

침착히 따라해주세요.


메뉴바에서 온도도 우측에 띄울 수 있습니다.

저는 CPU Core 2 를 지정해놓았습니다.


자동을 누르면 원래의 설정대로 온도가 어느정도 올라갔을시만 작동을하며 기본 세팅입니다.

하지만 개인의 취향에 따라 기본값을 설정할 수 있으니,

좋겠죠?

단축키도 잘 지원한다면 좋겠지만 희망사항일 뿐입니다..

어찌됬건 해결이 되셨나요?

그럼 보다 즐거운 MacLife를 위해서 

20000~

반응형
by 발전소장 에르 :) 2016. 4. 21. 01:23
반응형

안녕하세요 :) 에르의 생각발전소입니다~

이번 시간에는 저번 시간의 " let , var , int , double " 에 

이어서 String, Numbers에 대해서 다뤄보겠습니다.

String은 문자열을 의미입니다. 

여기서 문자열이란, 문자들이 모인 열을 의미하며, 

문자들은 character로 구분하며 이 character들이 모이면 String이 되는 개념입니다.

아래 예문을 살펴볼까요?

logan이라는 문자열을 상수로 정의하였고, hi라는 문자열을 상수로 정의하였습니다.

헌데 왜 에러가 뜰까요?

이유는 바로 "(큰 따옴표) 때문입니다. 

스트링으로 정의할 때는 문자열 앞뒤로 큰 따옴표가 꼭 필요합니다.

스트링 앞뒤로 큰 따옴표를 붙히니 에러가 말끔히 사라졌습니다.


mr이라는 클레스에 lee라는 스트링을 수정 추가할려는데 

에러가 발생합니다 왜그럴까요?

맞습니다.

mr는 상수 클레스이므로 건들 수 없습니다.

고로, mr 대신 hi 변수클레스에 hello 스트링을 더했습니다. 

글자가 붙는 것을 원하지않는 분들은 앞에 공백을 넣어주세요.


그럼 mr, hi 두 클레스를 붙혀서 " hi hello logan " 이라는 값을 얻고자합니다.

+= 덧셈 연사자를 이용하여, " hello " + mr 를 입력하여주시면 우측에

"hi hello logan" 이라는 결과값이 표출되는 것을 보실 수 있습니다.

let의 값을 다른 값에 덧셈하는 것은 가능합니다. (허나 직접적으로 초기화시키는 것은 불가능합니다.)



charaters라는 상수클레스를 만들고 mr클레스의 문자열의 각 문자들에 접근하기위해 

characters 기능을 이용하여, 간단하게 오브젝트 뷰가 생성되었습니다.

l, o, g, a, n 이라는 5개의 문자가 보이는데요.

count 기능을 사용하여, 실셈이 가능합니다.

let count = characters.count 로 5개라는 결과값이 표출되고있습니다.

String에 대해서 감이 오시나요?

의외로 쉽쥬?



이번에는 더블과 인트 값에 대해서 보충설명을 해보겠습니다.

height는 더블값이며, halfHeight = height/2 라는 코드에 에러없이 정삭적으로 작동합니다.


허나, divider 라는 상수클레스를 만들어 height/2 대신 height/divider 를 대입하니 에러가 발생합니다.

왜그럴까요? 분명히 똑같은 숫자 2인데 말이죠.

이유는 바로 타입 때문입니다.

divider의 타입은 Int값이며 height의 값은 double값입니다.

고로, 연산이 불가능한거죠

그리고 float은 32bit이며, double은 64bit입니다.

그냥 소수점값을 입력하면 그 클레스의 타입은 자동으로 double이 됩니다.

그래서 정확한 계산을 위해서 divider값을 Double값으로 변경 후 계산해보면 정확한 값이 표출됩니다.

저번 시간에 배운 type(value) 기억하시죠?

응용하시면 됩니다!


 Bonus) UInt 와 Int가 있습니다!.

값을 보시면 Int는 - 값까지 있는 반면에 UInt값에는 -가 없습니다!?

Unsigned Int라고 하여 양수만 표현하는 정수입니다. 

장점은 int에 비해 양수를 2배 (Int x 2 - 1 )만큼 더 사용가능합니다.

용도에 따라 Int와 UInt를 사용하시면 편하시겠죠?

1편링크<<<<


다음엔 TUPLE과 array로 찾아뵙겠습니다! :)


Have a lovely day`!


( 윤성관님의 강의와 꼼꼼한 재은씨의 스위프트2 를 참고하였습니다.)


반응형
by 발전소장 에르 :) 2016. 4. 20. 08:21
반응형

반갑습니다 :) 에르의 생각공작소의 에르입니다.

이번 시간에 다뤄 볼 주제는 바로 " SWIFT "입니다.

 objective-c 언어의 특징도 가지고 있으면서,

스위프트만의 독자적인 장점도 가지고 있는

오브젝티브씨를 다루셨었던 개발자분들은 

왠  새 한마리가 툭 튀어나와서 이리 마을을 흔드냐..

라고 하시겠는데

처음에는 스위프트가 공개됬을 때는 많은 분들이

많은 분들이.. 스위프트하면 가장 먼저 떠올리실 것 같은...?

네.. 저도 인정합니다.  스위프트하면 " 테일러 스위프트 " 가 가장 먼저 떠오르죠.

뜬금없지만, 레전드 짤하나 퍼왔습니다.

자! 이제 각설하고 본론으로 돌아가보겟습니다. 


스위프트(Swift)는 애플 iOS OS X를 위한 프로그래밍 언어 

2014년 6월 2일 애플 세계 개발자 회의(WWDC)에서 처음 소개되었다. 

기존의 애플 운영체제용 언어인 오브젝티브-C와 함께 공존할 목적으로 만들어졌으며, 

오브젝티브-C와 마찬가지로 LLVM으로 빌드되고 같은 런타임을 공유한다.

 클로저, 다중 리턴 타입, 네임스페이스, 제네릭스, 타입 유추 등 오브젝티브-C에는 없었던 

현대 프로그래밍 언어가 갖고 있는 기능을 많이 포함시켰으며,

코드 내부에서 C나 오브젝티브-C 코드를 섞어서 프로그래밍하거나 스크립트 언어처럼 실시간으로 상호작용하며

 프로그래밍 할 수도 있다. 언어 설명서도 함께 배포되었다. 애플에서는 iBooks에서 Swift에 관한 책을 배포하고 있다.

링크 --> [ swift 언어 개발문서 한국어 번역판 ] 입니다. 

본격적으로 시작하기전에, 앱스토어에서 XCODE를 다운받아주세요.

XCODE가 없다면 Swift는 무용지물입니다.


XCODE를 실행시키시면 위와 같은 화면을 보실 겁니다.

여기서 ' Get started with a playground " 를 클릭해주세요.

playground란 xcode의 장점 중 하나로써 연습장입니다.

코드를 작성해보고 작성하는 즉시 중간중간에 자동으로 혹은 수동으로 실행하여,

결과를 즉시 확인할 수 있습니다.



이름은 아무렇게 편하신데로 적어주시고 플렛폼은 IOS를 선택해주시고 생성해주세요.


플레이그라운드 실행시켰을 때 제일 처음 보게될 화면입니다.

익숙한 hello world 란 문장이 보이네요.

그런데 맨앞 줄에 var 는 도대체 무엇일까요?



let 은 상수 값을 선언하기 위해 쓰입니다. invariable 값을 선언하기위해 사용되죠.

한번 그 값으로 초기화되면 변경 할수없습니다.

var 는 변수 값을 선언하기 위해 쓰입니다. variable 갑슬 선언하기위해 사용됩니다.

한번 선언된 값을 수정할 수 있습니다.

또한, 정석대로라면 let name:type = value가 되어야하는데 타입 선언 부분이 생략되어있습니다.

왜냐하면 스위프트의 자동 타입 추론 기능으로 인해 값을 입력하면 그 값을 자동으로 인식하여,

컴파일러가 해석한 타입으로 선언합니다.

고로, 정수값을 입력하면 그 개체의 타입은 자동추론을 통해 정수로 선언되는 것이며,

문자열을 입력했을 경우 개체의 타입은 자동 추론으로 인해 스트링으로 선언됩니다.


 let으로 maxnumber라는 개체를 생성하였고 저 개체의 값은 300이며, 코드를 수정하지않는 한 변경하지못합니다.

var 로 currentNumber라는 개채를 생성하였고 저 개체의 값은 123이며, 수정가능합니다.

currentNumber 값을 123에서 230으로 수정하였고 문제없이 변경되었습니다.

허나, maxNumber 값을 300에서 350으로 수정하고자 하였으나 에러가 발생했습니다.

이번에는 currentNumber와 pastNumber를 더해보도록 하겠습니다.

currentNumber + pastNumber 라는 코드를 실행했더니 에러가 납니다.

이유는 바로 타입이 서로 다르기 때문입니다.

pastNumber는 더블 값을 가지고 있으나 currentNumber는 정수값을 가지고 있습니다.

스위프트에서는 다른 타입의 값을 서로 연산시킬 수 없습니다.

둘 중 하나의 값을 같은 타입으로 재선언해주셔야합니다.

int 타입인 currentNumber 를 Double값으로 재선언하여 pastNumber 값과 덧셈을 시켜보니...

에러가 사라졌습니다.

값을 재선언하기위해서는 type(value) 문을 사용해주시면 됩니다.!

다음편은 string과 numbers 를 다뤄보도록하겠습니다.

윤성관님의 강의를 참고하엿습니다.




p.s 처음 스위프트가 공개되었을 때는 외면은 많이 받았었습니다.

옵젝씨가 드디어 빛을 발하려고하는 과정에서 스위프트가 공개되었기 때문입니다.

스위프트의 몰락을 점치는 사람들이 꽤 있었습니다.

허나 옵젝씨와 호환되며, 더 세련되고 현대화된 스위프트가 오픈 소스로 공개되며,

실 개발에 사용되고 시간이 지남으로서 영향력이 커져가고 있음은 사실이며,

애플 또한 공식홈페이지를 통해 스위프트 언어 사용을 장려하고 있습니다.

저같이 처음으로 프로그래밍을 공부하시는 분들은 스위프트가 의외로 적합하다고 봅니다.

다들 같이 힘내봅시다! :)






반응형
by 발전소장 에르 :) 2016. 4. 19. 08:27
반응형

Hello~ 안녕하세요 :D

에르의 생각발전소 에르입니다!

이번 시간에 다뤄볼 주제는 블로그 2차주소인데요.

티스토리 블로그주로서 어떻게 2차주소를 구매하는지

또 적용시키는지에 대해서 다루어보도록 하겠습니다!

차근 차근 따라오시면 전혀~! 어려울 것 없으니 !

시작해봅시다!



익숙한 화면이죠? 블로그주라면 거의 매일 보는 화면인, 블로그 관리화면입니다. 

 여기서  - 기본 정보 --> 주소설정 --> gabia 도메인 구입/등록 을 클릭해주세요!

[ 예전에는 바로 구글애드센스 적용을 위해 history.com 주소를 사용할 수 있었으나 년초부터 정책이 바뀜으로서

직접 사설 도메인을 구매하여 2차주소 설정 후 애드센스를 연결해줘야합니다.]



안타깝게 티스토리와 가비아 사이에 아이디 연동따위는 되지않는 관계로 신속히 가비아 회원가입을 해주세요! :)



gabia 도메인 구입/등록 을 클릭하면 가비아 홈페이지가 나오는데요.

검채상에 본인이 2차주소로 설정하고싶은 주소를 클릭하시면 됩니다.

저는 예를 들어 exampleserch라고 입력하여 검색/등록을 클릭했습니다.



검색 결과입니다. 아래와 같이 다양한 도메인들이 등록 가능으로 표시되어있네요.

저희가 필요한 것은 이 도메인들 중 하나인데요. 대중적인 .com을 선택하여 진행하겟습니다.

바로등록을 클릭!



도메인 등록 : 신청서 작성 화면입니다. 

기간은 본인의 선택에 따라 1년 ~ 10년까지 선택가능하고 1년 단위 비용은 2만원입니다. (부가세 제외)

저는 일단 1년만 선택하여 총 22000원을 결제하였습니다.

하지만 장기적으로 한번에 결제하여 돈을 절약하시겠다는 분은 기간을 넉넉히 잡으시면

할인이 적용되니 참고해주시길 바랍니다.

그리고 제일 중요한 점은 관리 정보 텝에 있는

네임서버 정보인데요. 꼭 " 가비아 네임서버 사용" 을 체크해주세요.

안그럼 말짱도루묵이 되버립니다..

결제를 완료하셨으면 결제 내역에서 위와 같은 화면을 보실 수 있습니다.

( 네트워크 사정상 결제를 하셨더라도 약간은 기다려주세요.)




저같은 경우는 맥북이라 사파리로 결제를 진행하려고했는데 가비아 홈페이지가 OS X 는 지원해주지않는터라 

이것저것 뻘짓거리를 하다가 모바일을 이용해 무통장거래방식으로 결제하여 지불했습니다.

맥 유저분들은 참고해주세요.

(맥 유저분들도 부트캠프로 윈도우를 사용하시면 문제없습니다.)




My 가비아에서 본인이 등록한 도메인을 확인하 실 수 있습니다.

이제 네임플러스 등록을 하러가볼까요?

네임플러스가 꼬옥~ 되어있어야 2차 주소 설정이 가능하답니다!



네임플러스를 클릭해주시고,  본인의 도메인을 입력해주시는데 

여기서 중요한 점은 관리기능 선택에서  " 블로그 연결 " 을 꼭 선택해주세요!



신청서는 쉽게 쉽게 작성하시면 됩니다. 

저희는 티스토리니 다음 Tistory를 선택하시면 됩니다.


네임 플러스를 완료하시면 부가서비스 관리: 네임플러스 텝에서

위 화면을 보실 수 있습니다.

IP 주소를 보시면 다음 블로그 연결 IP 주소와 동일하쥬?

혹시 모르니 다시 한번 네임플러스 신청이 잘됬는지 안됬는지 확인해보고 

약간의 기다림을 거친 후~ 

티스토리로 돌아가봅시다!


네임플러스가 사람마다 얘기가 다른데 하루가 걸린다는 사람도 있고 몇시간이 걸린다는 분도 있는데

저같은 경우는 15분만에 적용됬습니다! 

이제 기본 설정 --> 주소설정 --> 블로그주소에서 구매한 도메인을 입력하고 저장을 똬앟! 눌러주세요 ㅎ

자 그럼 2차주소 설정은 끝났습니다! 

간단하쥬?

 (소요시간 약 15~25분)



짜잔! 드디어 저만의 도메인이 생겼어요! 

이제 구글애드센스도 제약없이 등록가능하고, 다른 사람들이 보다쉽게 제 도메인을 통해

제 블로그를 스쳐가실 수 있으시겠죠?

하지만 2차주소가 항상 좋은 것 만은 아닙니다..

다음 편에서는 2차주소의 장단점에 대해서 살펴보겠습니다.

p.s 2차주소 변경 후 방문자가 ....크흡..

반응형
by 발전소장 에르 :) 2016. 4. 19. 00:07
반응형

                           Hello~ 안녕하세요? .

   에르의 생각발전소의 에르입니다~ ! :):


이번에는 OS X에서 사용자의 습관과 방식에 따라 간혹 혹은 자주 발생할 수 있는


" kernel_task "의 과점유 현상에 대해서 다뤄보도록 하겠습니다


간략하게 kernel_task에 대해서 설명하자면, 최상위 계층의 프로세스입니다. 넘사벽이죠..




kernel_task는 최상위 계층의 프로세서입니다. 





 체스로 치면 킹이라고 할 수 있죠 :)


일단 kernel_task가 활동을 하기 시작하면, 시스템상에 구동되고 있는 응용프로그램들의 


CPU 사용량을 현재 상황에 맞춰 과부하가 일어나지않도록 골로구 재분배를 하게되며, 


위 과정을 진행하는 과정에서  자연스레 " kernel_task"의 CPU,MEMORY 점유율이 증가하게됩니다.


kernel_task이 일을 처리하는 과정에서 내부 하드웨어가 과열되는 경우가 있는데


이 과정에서 FAN 역시 열을 방출하기위해 미친 듯이 돌아갑니다! ( 이걸 " 이륙 " 한다고 표현하더라구요. )


ㅇ 참고로 맥프레13은 1개의 FAN을 맥프레15는 2개의 FAN을 내장하고 있습니다.


솔직히 맥북 사기 전에는 이해 못했는데 사고나서 왜 이륙이라고 하는지 이해가 되더라는..


그리고는 원인이 해소될 때까지 위 프로세스를 유지하다가 문제가 해결되면 다시 다른 일을 시작하죠. 일종의 백혈구같은...


kernel_task 는 우리가 모르는 사이에 많은 일들을 묵묵히 수행해내며, 


전반적으로 CPU 과부하를 방지하고 시스템을 안정시키는데에 남모르게 힘을 쓰고 있습니다.


허나! 맥도 기계인지라, 완벽할 수는 없으므로 간혹가다가 잘못된 행동을 수행하기도 하는데요.

                                                                                 (일종의 알고리즘적 오류랄까요..)


문제발생 ==> 내부온도 상승 ==> kernel_task 출동 ==> 재분배를 통한 시스템 진압 ==> 평화 가 되야하는데,


문제발생 ==> 내부온도 상승 ==> kernel_task 출동 ==> 재분배를 통한 시스템 진압 ==> 문제발생 


위 알고리즘이 반복이 되면 될수록, 과부하의 과부하가 걸리면 시스템이 마비가 되는거죠..


위 문제의 발생 원인으로는 


1) 프로세서나 프로그램이 내부에서 오작동하여 하드웨어의 내부 온도가 너무 높아진 경우


2) 열의 방출이 제대로 이루어질 수 없는 환경에서 맥북을 사용할 때 !

     ex) 이불이나 쿠션 위에 놓고 맥북을 사용하는 경우.


3) 버그가 발생하거나 바이러스에 감염되어, kernel_task가 활동하지않아도 될 환경임에도 불구하고 오작동하는 경우

    맥 os 특성상 이럴 확률은 극히 드물다고 봐야겠죠?


4) 내부온도센서의 오류 혹은 외부 온도의 영향으로 내부온도센서가 착각을 일으킬 때


5) 잘못된 설정이 오류를 야기할 때


정도로 요약할 수 있을 것 같습니다 (물론 생길 수 있는 변수는 많겠지만요.)




백혈구같이 좋은 놈이지만, 과하면 오히려 독이 됩니다


위의 cpu는 나름 정상범위내에 있습니다.


보통 100%~2000%까지 치솟는 걸로 알려져있으며,


한번 폭주하면 정상적인 맥북 사용이 불가합니다..


제일 깔끔한 방법은 OS X를 밀어버리고 새로 까는 겁니다만..


시간도 많이 걸리고 여러모로 쫌 그렇죠?


그럼! 구글링을 시작해봅시다!

     검색하다 느낀건데, 3~5년 전 글이 많더라구요.


허나 우리에게는 쓸모없으니 되도록 최신으로 기간을 조정해줍니다.



꽤나 많은 분들이 이런 증상을 호소하시네요. 


 깨알같은 200%... 



검색 중 나름 구체적인 방법을 제시하는 글을 발견하고 따라해봤습니다.


맥북의 모델 식별자를 기억해두시고 파인더를 활성화시킨 후 


"SHIFT + CMD + G " 를 눌러 폴더 바로가기 기능을 실행시킨 후 


아래의 주소를 복사한 뒤 붙여넣기 합니다.


System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/Plugins/ACPI_SMC_PlatformPlugin.kext/Contents/Resources



그 후 본인 모델식별자와 이름이 같은 .plist 파일을 삭제 후


재부팅시키면 짠!! 하고 해결이 된다는데


제 모델 식별자는 아예 없네요..( 물론 이 방법으로 되시는 분도 있습니다.)


아무리 파인더를 검색해도 없어요..


그러므로, 패스...




혹시나하는 마음에  시스템 진단을 실행시켜보았습니다!



기다려봅니다 (1분 걸렸어요).




...? 


이제 뭐 어쩌라는거지..?


에라이 모르겠당....


애플 공홈으로 가봅시다!


오오잉?? 


왠지 다 해당되는 것 같은 이 느낌은 뭘까요..



위 방법으로 해결되시는 분이 많고 안되는 분도 있습니다


저 또한 위 방법으로 어느정도 안정을 찾았네요!


하지만 실망하지마시고 기다려주시면 


다음에 2편으로 찾아뵙겠습니다! :)


HAVE A LOVELY DAY ~ 









반응형
by 발전소장 에르 :) 2016. 4. 9. 23:52
| 1 |