A Column

검색

검색

Total 42 / 1 page
썸네일

[A Mentor ] IT강사 추천! 쉽게 이해하는 개발 공부 책

안녕하세요, 고용노동부 우수훈련기관 중앙HTA입니다. “어떤 걸로 개발 공부를 하면 좋을까..“ 고민 되시나요? 10년이상의 중앙HTA IT강사가 추천하는 개발공부 도서를 소개합니다:) 이해하기 쉬운 책으로 비전공자, 초급 개발자에게도 도움이 되는 도서로 준비했습니다! *이 게시물은 중앙HTA 강사의 추천 내용을 바탕으로 제작되었습니다

2024-01-10

썸네일

[중앙HTA] 어떻게 프로젝트를 진행할까?

가장 많은 질문을 받는 항목 중 하나가 프로젝트 인데요, 중앙HTA에서 프로젝트는 어떻게 진행되고 활용되는지에 대해 내용을 담았습니다.

2023-11-01

썸네일

[멘토링 취업특강] 네카라쿠배 개발자가 추천하는 취업준비 사이트&도서

안녕하세요, 고용노동부 우수훈련기관 중앙HTA입니다. 개발자 취업,현직 개발자가 추천하는 취업준비 사이트&도서 하반기 채용을 준비하는 시점! 딱 맞는 정보로 돌아왔습니다!

2023-10-18

썸네일

[A Mentor ] IT강사 추천! 쉽게 이해하는 개발 공부 책

안녕하세요, 고용노동부 우수훈련기관 중앙HTA입니다. “어떤 걸로 개발 공부를 하면 좋을까..“ 고민 되시나요? 10년이상의 중앙HTA IT강사가 추천하는 개발공부 도서를 소개합니다:) 이해하기 쉬운 책으로 비전공자, 초급 개발자에게도 도움이 되는 도서로 준비했습니다! *이 게시물은 중앙HTA 강사의 추천 내용을 바탕으로 제작되었습니다

2023-10-05

썸네일

[멘토링 취업 특강] 네카라쿠배 개발자가 전하는 취업꿀팁 1탄

안녕하세요, 고용노동부 우수훈련기관 중앙HTA입니다. ​ 중앙HTA 특.장.점‼ 현업개발자와의 취업 멘토링특강부터 1팀 1명의 멘토를 연결해서 특.급.조.언까지 받을 수 있다는 사실 알고계신가요? ​ 이번에는 특별히 중앙HTA 수료생을 위해 네카라쿠배 현업개발자님과 특강을 진행하였습니다. ​ 1탄: 취업을 준비하는 우리들의 자세!! 바로 나에게 필요한 건, 적.극.성!!   중앙HTA에서 제공하는 현업개발자와의 멘토링, 현직기업담당자의 모의면접을 꼬~옥 활용해보기,약~속 2탄, 취업꿀팁으로 곧 돌아옵니다>>> ​ *이 게시물은 네카라쿠배 현업개발자와 중앙HTA 수료생과 함께한 취업 멘토링특강 내용을 바탕으로 제작 되었습니다.

2023-09-06

썸네일

[멘토링 취업 특강] 네카라쿠배 개발자가 전하는 취업꿀팁 2탄

안녕하세요, 고용노동부 우수훈련기관 중앙HTA입니다. ​ “개발자는 취업 준비를 어떻게 해야하나요?” 막막하다면, 현직 개발자의 꿀팁이 왔어요:) ​ 2탄: 취업 준비할 때, 꿀팁은? 준비가 되어있다면, 기회도 잡을 수 있는 법!   ​ 3탄, 취업Q&A로 곧 돌아옵니다>>>> ​ *이 게시물은 네카라쿠배 현업개발자와 중앙HTA 수료생과 함께한 취업 멘토링 특강 내용을 바탕으로 제작 되었습니다.

2023-09-06

썸네일

[멘토링 취업 특강] 네카라쿠배 개발자와 함께하는 취업 Q&A

안녕하세요, 고용노동부 우수훈련기관 중앙HTA입니다. 마지막 3탄!! 개발자 취업,현직 개발자에게 무엇이든 물어보세요:) 멘토링 중 Q&A 내용을 모아서 재구성해보았습니다.   취업에 관해 궁금증과 고민 해소하는 시간이 되셨길 바라며, 모든 취준생들의 취업을 응원합니다^^ *이 게시물은 네카라쿠배 현업개발자와 중앙HTA 수료생과 함께한 취업 멘토링특강 내용을 바탕으로 제작 되었습니다. 

2023-09-06

썸네일

[응수쌤의 IT노트] 클라우드 네이티브 아키텍처와 클라우드 네이티브 애플리케이션

  클라우드 네이티브 아키텍처와 클라우드 네이티브 애플리케이션       클라우드 네이티브 아키텍처란? 기존의 로컬 환경이나 사내에서 구축하고 운영하였던 시스템을 클라우드 환경으로 전환해서 클라우드 컴퓨팅 시스템의 장점을 100% 활용할 수 있도록 애플리케이션을 구축하는 방법이다. 클라우드 컴퓨팅의 장점을 이용하기 위해서는 자동화된 빌드와 테스트 그리고 배포가 가능해지고 단단한 서비스의 구성요소와 변화에 민첩한 시스템을 구축할 수 있게 된다.   클라우드 네이티브 아키텍처의 핵심 확장 가능한 아키텍처 확장가능한 아키텍처란 시스템의 수평적 확장에 유연한 구성을 말한다. 많은 사용자들이 몰리더라도 확장된 서버로 시스템을 부하 분산하고 가용성을 보장할 수 있게 하는 것이다. 시스템을 양적으로 늘리는 것은 시스템의 하드웨어 비용이 증가되겠지만, 클라우드 네이티브 아키텍처에서는 클라우드 서비스를 제공하는 업체로부터 가상의 서버, 스토리지, 네트워크 등을 빌려서 사용하게 됨으로써 비용을 최소화 시킬 수 있고, 양적으로 증가된 시스템을 더 이상 사용하지 않게 되었을 경우에는 대여했던 자원을 반납해서 비용을 낮출 수 있다.   탄력적 아키텍처 탄력적 아키텍처는 CI/CD를 이용해서 서비스의 통합, 배포, 생성의 시간을 단축시키는 것을 뜻한다. 애플리케이션을 구성하는 각 기능을 하나의 분리된 마이크로서비스로 개발하고, 분리된 서비스를 통합하고 배포하기까지 소요되는 시간을 CI/CD를 통해서 처리함으로써 시스템 환경에 적용되는 시간을 단축할 수 있게 된다. 탄력적 아키텍처는 마이크로서비스로 작게 분리된 독립적인 서비스 구조로 개발되어야 하며, 서로 분리된 서비스들은 종속성을 최소화시키기 위해서 각 서비스는 상태를 가지지 않는 서비스 형태로 제공해야 한다.   장애격리 장애격리는 특정 서비스에 오류가 발생하더라도 다른 서비스에 영향을 주지 않는 것을 말한다. 클라우드 네이티브 아키텍처에서 마이크로서비스들은 하나의 독립적인 작은 단위의 애플리케이션과 동일하기 때문에 하나의 마이크로서비스에서 발생하는 문제나 오류사항이 다른 서비스에 미치는 영향을 최소화할 수 있다.     클라우드 네이티브 애플리케이션 클라우드 네이티브 애플리케이션은 클라우드 네이티브 환경에서 개발, 실행되는 애플리케이션을 말한다. 클라우드 네이티브 애플리케이션은 클라우드 환경에 지속적인 개발과 자동화된 관리 환경을 제공하기 위해 설계된 애플리케이션이므로 클라우드 내에서 확장이 가능하고, 어떤 클라우드에도 이식이 가능하다. 기존 애플리케이션은 모놀리식(Monolithic, 단일한) 구조로 물리서버 기반 위에서 동작하는 반면, 클라우드 네이티브 애플리케이션은 소규모 서비스 단위의 마이크로서비스로 구성되며 가상 컨테이너 환경에서 동작되도록 설계되고 구현된다.   [기존 애플리케이션과 클라우드 네이티브 애플리케이션을 차이점]   구분 모놀리식 애플리케이션 클라우드 네이티브 애플리케이션 애플리케이션 구조 모놀리식 구조 마이크로서비스 결합 크고, 조밀한 결합 작고, 느슨한 서비스 기반 실행환경 물리서버 가상 컨테이너 확장 수직확장(Scale-Up) 수평확장(Scale-Out) 인프라 의존성 인프라 의존 인프라 독립, 의존성 보장 개발방법 폭포수 개발 방법 애자일 개발방법 빌드 및 배포 수작업, 긴 시간 CI/CD 자동화, 지속적, 짧은 시간 조직 구조 단절된 개발 DevOps 협업   클라우드 네이티브의 구성요소 클라우드 네이티브를 위한 구성요소는 마이크로서비스, 컨테이너, 데브옵스, CI/CD다.   1. 마이크로서비스 애플리케이션의 민첩성과 유지/관리 편의를 위해 기존의 모놀리식 아키텍처를 작은 기능 단위인 마이크로서비스로 분리하고, API를 통해 서로 커뮤니케이션 할 수 있게 하여 독립적으로 개발, 배포, 운영되는 서비스다. 모놀리식은 전체 애플리케이션이 하나의 통합된 패키지 현태로 구성되어 있고 구성 모듈들이 의존적으로 연결되어 있기 때문에 기능 하나를 변경하려면 전체 애플리케이션을 재배포해야 하는 번거로움이 있다. 같은 이유로 특정 모듈만 확장하기가 어별고, 어플리케이션을 담고 있는 서버 자체를 늘려야 하는 비효율적인 구조다. 마이크로서비스 아키텍처는 애플리케이션을 작은 기능으로 나누어 구축하기 때문에 개별 서비스들은 더 쉽게 변경하거나 확장할 수 있으며, 서비스마다 다른 언어, 프레임워크, 라이브러리를 사용할 수 있다는 장점이 있다.   2. 컨테이너 가상화 컨테이너 가상화는 클라우드 네이티브의 핵심 개념이다. 기존의 로컬환경에서 운영하던 시스템을 클라우드 환경으로 이전함으로써 적은 비용으로 확장성과 이식성을 갖는 시스템을 구축할 수 있도록 하는 것이 컨테이너 가상화 기술이다. 컨테이너 가상화는 기존의 서버보다 훨씬 가벼운 프로세스 수준의 컨테이너를 마이크로서비스의 배포 및 실행환경으로 사용하기 때문에 어떠한 클라우드 환경에도 즉각적인 배포가 가능하도록 확장성과 이식성을 갖추고 있다. 하이퍼바이저 기반의 가상화(VM방식)는 애플리케이션이 돌아갈 수 있는 OS환경이 포함된다. 그렇기 때문에 애플리케이션을 실행하기 위해서는 VM을 띄워 자원을 할당한 다음, OS를 부팅한 후 애플리케이션을 구동할 수 있기 때문에 애플리케이션을 구동시키는데 시간이 오래 걸린다. 반면, 컨테이넌 기반의 가상화 방식은 프로세스 간 벽을 만들어 어플리케이션이 구동되는 격리(컨테이너)되어 있기 때문에 애플리케이션마다 OS를 개별로 구성해줄 필요 없이 하나의 OS을 공유하여 사용한다. 개별 OS가 필요하지 않기 때문에 더 가볍고 크기도 작아서 복제와 배포에도 간편하다. 따라서 애플리케이션 실행에 필요한 모든 것(라이브러리, 바이너리, 기타 구성 파일 등)을 패키지로 묶어 컨테이너 이미지를 만들어 사용하기 때문에 컨테이너가 작동하는 환경이라면 어디서든지 실행시킬 수 있다는 장점이 있다.   3. 데브옵스(DevOps) DevOps는 Development와 Operation이 합쳐진 용어다. 개발조직과 운영조직의 통합을 의하는 것으로 개발조직과 운영조직이 통합되면 고객의 요구사항을 빠르게 반영할 수 있다. DevOps는 자주 변경되는 고객의 요구사항을 반영하기 위해서 개발된 내용을 테스트하고, 피드백 받고, 업데이트하는 과정을 전체 개발 일정이 완료될 때까지 끊임없이 반복적으로 진행하는 것이다. 따라서, 클라우드 네이티브 환경에서는 이러한 DevOps 환경에 맞게 서비스를 더 작은 단위의 마이크로서비스로 분할해서 개발함으로써 더 자주 테스트하고, 쉽게 배포할 수 있어야 한다.   4. CI/CD CI/CD는 지속적인 통합과 지속적인 배포를 의미한다. 지속적인 통합은 애플리케이션을 수많은 마이크로서비스로 분할하고 여러 개의 개별 개발팀에서 개발하고 있는 경우에 결과물을 통합하기 위한 형상관리를 의미하기도 하고, 통합된 코드를 빌드하고, 테스트하고, 배포하는 과정 자체를 의미하기도 한다. CI 시스템은 Git과 같은 형상관리 시스템과 연동해서 사용되며, 개발자가 Git에 해당 코드를 업로드함과 동시에 빌드/테스트를 실행해서 다른 코드와 문제가 발생하는지 여부를 바로 확인해 볼 수 있다. 지속적인 배포는 패키지화된 결과물을 개발자나 운영자의 개입없이 자동으로 실행환경에 배포하는 것이다.       <저작권자(c)중앙에이치티에이(주). 무단전재-재배포금지>  

2022-07-15

썸네일

[취업꿀팁] 합격률 높이는 면접기술방법

  [취업꿀팁] 합격률 높이는 면접기술방법       안녕하세요. 취업담당자 입니다. 오늘도 면접관의 질문의도를 파악하여 면접준비 하는 방법에 대해서 3탄을 준비했습니다. 합격률을 높이는 면접기술에 대해서 확인하시기 전에 면접 답변 스킬에 관련하여 1편, 2편도 있으니 확인해주세요~   면접 합격률을 높이는 취업꿀팁 바로 시작하겠습니다!           이런 건 왜 물어볼까? 면접에서 괜히  물어보는 질문은 없다! 면접관의 의도를 파악하고  완벽한 답변을 준비하는 방법!!! (뚜둥)             센스있게 나를 어필해서  당당하게 합격하자!!           Q. 본인이 열심히 해서 낸 성과를 다른 상사가 가로챘다면  어떻게 하겠습니까?   조직과 개인의 이해가 대립되는 가상 상황에 대처하는 방식을 확인하여 조직내에서의 애매한 갈등 상황을 슬기롭게 해결할 수 있는지를 파악하려는 질문   Tip. 즉각적으로 항의하겠다는 답변은 경솔하다는 인상을 줄 수 있고, 그렇다고 묵인하겠다는 답변도 진실성을 의심받을 수 있으니 주의하세요! 일단 자신의 성과 기여도에 대한 성찰의 자세를 보여주고, 자신이 중시하는 것은 성과창출 과정과 성취감임을 드러내는 것이 핵심이며, 공정성의 가치를 지키기 위해 회사에 제도적 장치를 건의하겠다는 답변을 덧붙여도 좋습니다.               Q. 살면서 가장 큰 난관에 부딪쳤던 때가 언제 인가요? 그것을 어떻게 극복했습니까?   난관을 헤쳐 나간 경험을 통해 지원자의 목적의식과 의지수준, 입사 후 업무수행 중 닥칠 수 있는 난관의 극복 가능성을 파악하려는 질문   Tip. 남들이 해보기 어려운 높은 수준의 난관을 극복해본 사람일수록 입사 후에 닥친 어려움도 잘 해결할 수 있을 것이라고 생각하는 것을 기억해주세요. 난관 속에서 불굴의 의지로 극복했던 경험을 소재로 선정하는 것이 유리합니다.               Q. 팀 프로젝트를 하면서 동료와 갈등을 겪었던 경험을 이야기 해보세요. 지원자의 팀워크와 헌신, 노력을 가늠해보기 위한 질문   Tip. 해결이 어려운 난이도가 높은 갈등 상황이었고 자신이 적극적/주체적으로 해결하려 했던 경험일수록 적합합니다. 자신의 희생을 감수하려는 자세, 팀을 위해 헌신하려는 자세를 부각시킬 수 있다면 더욱 효과적입니다.           Q. 살면서 했던 가장 큰 실수는 무엇이며 어떻게 대처했는가? 과거의 실수 경험을 확인하여 실수에 대처하는 태도와 반성 노력, 해결방식 등을 파악하려는 질문   Tip. 가급적 개인의 성격적 결함에 의한 실수보다 순간적 판단착오나 능력/경험 부족으로 범했던 실수를 소재로 제시하는 것이 무난합니다.  자신의 실수에 대해 회피하지 않는 자세와 실수에 대해 반성하고 적극적으로 책임을 지는 자세를 보이는 것이 핵심입니다.           Q. 남들과 다른 나만의 독특한 생각을 발휘해 본 경험을 이야기해보세요.   창의력 발휘 경험을 확인함으로써  지원자의 창의력 수준을 가늠해보기 위한 질문   Tip. 발명, 창의력 대회 수상 등 객관적인 증거를 제시할 수 있는 사례가 가장 좋은 소재이나 이러한 경력이 없더라도 차별화된 시각을 보여주었거나  발상의 전환을 통해 아이디어를 창출해본 사례도 가능합니다.             Q. 리더쉽을 발휘해본 경험을 이야기 해보세요. 과거에 리더십을 발휘한 경험을 확인하여 장기적으로  조직을 이끌어 나갈 리더로 성장할 수 있을지를  가늠하기 위해 던지는 질문   Tip. 적절한 목표 제시 및 공유, 명확한 역할 배분, 리더로서의 솔선수범 자세, 팀원들에 대한 적절한 동기부여 등 리더에게 요구되는 기본 자질들을 두루 발휘했던 사례를 이야기 합니다.               위의 자료는 "면접 D-3 핵심 질문과 합격 답변 완벽 마스터 기적의 취업면접 100문 100답" 책에서 발췌하여 작성하였습니다.   모두들 면접 준비 잘하셔서 좋은 결과 있으시길 바랍니다! ^^ ​   <저작권자(c)중앙에이치티에이(주). 무단전재-재배포금지>    

2018-10-16

썸네일

[취업꿀팁] 어려운 면접 질문 똑똑하게 답변하는 방법

  [취업꿀팁] 어려운 면접 질문 똑똑하게 답변하는 방법  안녕하세요. 중앙HTA 취업담당자입니다.오늘은 면접 질문의도 파악하기 2탄으로어려운 면접 질문 똑똑하게 답변하는 방법에 대해 말씀 드리겠습니다.     애매하고 난감한 질문으로 혹여 잘 못 답변하면내가 너무 이기적으로 보이지 않을까 내가 너무 편향된 사람으로 보이는 건 아닐까 걱정이 많으시죠?솔직한 내 마음을 모두 표현하면 면접관 표정이 어두워질 것 같고,그렇다고 거짓으로 포장하기엔 양심에 걸리고...어떻게 조리있게 답변해야 이 난감한 상황을 잘 대처할 수 있는지지금부터 차근차근 잘 알아봅시다!       이런 건 왜 물어볼까?면접관의 질문의도를 파악해봅시다. 면접장소에서 면접관이 괜히 물어보는 면접 질문은 없습니다.이력서에 내용을 다 써놨는데 왜 면접을 보고 이상한 질문을 하는 걸까요?       면접 질문은 내가 할게.대답은 누가 할래?      면접관의 의도를 정확히 파악하고보다 원하는 요점을 파악해서 답변을 준비하는게 중요합니다.      어렵고 애매한 면접 질문에똑똑하고 현명한 답변으로 면접 합격률을 높입시다!!       전공과는 무관한 업무인데 왜 지원했나요?  지원한 분야가 진심으로 하고 싶은 업무인지, 해당 업무를 원활하게 수행 할 기본 능력이 되는지 확인하기 위한 질문Tip. ‘비전공자’임에도 잘 할 수 있다는 근거를 구체적으로 제시 할 것. 자신의 전공이 업무수행에 기여할 수 있는 장점이나 비전공자의 약점을 커버할 수 있는 근거를 보여주는게 핵심!      10년 후 자신의 모습은 어떤 모습일까요?  지원한 회사에 지속적으로 기여할 의지와 열정이 있는지를 파악하기 위한 질문Tip. 도전적이지만 달성 가능한 수준으로 경력목표가 생생하게 그려지도록 묘사할 것(분야/위치/활약상)두괄식으로 답변. 목표와 목표를 세운 이유 및 근거를  제시        만약에 지원한 업무 말고 다른 부서에 발령 난다면 어떻게 할 건가요? 조직 내에서의 애매한 갈등상황을 슬기롭게 해결할 수 있는지를 파악하는 질문Tip. 이기적인 모습 혹은 의도적 충성형 답변은 피할 것. 가급적 조직의 요구를 수용하는 입장으로 답변하되 개인적인 요구를 조직 내에서 허용되는 범위 안으로 합리적인 방식으로 전달하겠다는 답변을 할 것      프로젝트를 하는데 비협조적인 동료가 있다면 어떻게 하겠습니까? 이상적인 가치와 현실이 대립되는 상황에서 얼마나 슬기롭게 대처하는지 파악Tip. 이상적인 가치를 훼손하지 않는 범위 내에서 절충안을 제시하고그 것이 통하지 않을 경우의 선택을 답변 할 것      인생에서 가장 큰 실패의 경험은 무엇인가요? 실패에서 교훈을 얻고, 이를 극복해낼 수 있는 잠재력이 있는지를 파악Tip. 소재로 난이도가 높은 도전을 했다가 실패해본 경험을 선정하는 것이 좋으며 실패 후에 인생에 어떻게 반영하고 있는지 설득력 있게 제시하는게 핵심.실패 경험이 없다는 것은 진정성이 없거나 자기 성찰이 부족하다고 여겨질 수 있음     위의 자료는 "면접 D-3 핵심 질문과 합격 답변 완벽 마스터기적의 취업면접 100문 100답" 책에서 발췌하여 작성하였습니다.    ​<저작권자(c)중앙에이치티에이(주). 무단전재-재배포금지>    

2018-09-20

썸네일

취업뽀개기와 함께 알려드리는 사회초년생이 취업할 때 알아야할 4가지!

취업뽀개기와 함께 알려드리는 사회초년생이 취업할 때 알아야할 4가지!​안녕하세요! 중앙HTA 취업담당자입니다.취업뽀개기와 함께 알려드리는 중앙HTA IT취업 꿀팁!오늘 주제는 사회초년생분들 IT기업 입사할 때 알아야 할 4가지 입니다. 면접보고 합격한 회사에 입사를 해도 될지 고민을 하는 경우들을 종종 보게 됩니다.사실 명확한 기준은 없지만 그래도 취업하실 때 꼭 고려해보면 좋을 것들에 대해서 말씀드리겠습니다!     중앙에이치티에이 IT취업 꿀팁사회초년생들 IT기업 입사할 때 4가지는 꼭 확인하자!!   ​  기업들도 직원들을 채용할 때 정말 다양한 방법으로 인재들을 선별하고 있습니다. 이력서를 통해 다양한 스펙을 요구하고,  면접도 인성면접, 프레젠테이션 면접, 토론면접 등 다양하고 테스트를 하고 파악을 합니다. 심지어 합숙까지 시키며 몇날 며칠동안 다양한 모습을 보고 결정하는 경우들도 있고,그렇게 어렵게 뽑아놓고도 인턴기간을 둬서 또 다시 평가를 통해 정규직 전환을 결정하죠..  ​  이처럼 기업들도 함께 할 직원 채용을 하는데 엄청난 노력과 투자를 하는데하루 8시간 이상을 회사에서 보내는 우리 직장인들도나의 삶의 만족과 미래를 위해서 내가 입사할 기업에 대해 면밀히 알아보고 파악해서 입사를 해야 합니다!그렇다면 우리는 무엇을 보고 입사여부를 결정해야 할까요? ​​  1. 업무의 대한 파악뭐라구용? 직무에 대한 파악은 이력서 쓰고 구직활동 하면서 다 하는거 아니냐구요?물론 그때부터 당연히 알아보셔야 하지만 입사할 회사의 업무를 포커스에 맞춰서 좀 더 구체적으로 살펴보셔야 합니다.IT개발자는 개발 기술이 가장 중요한건 알고 계시죠?Java 개발만 10년을 했다고 해서 C언어 개발자로 이직할 때 10년의 경력을 모두 인정받을 수 있을까요? 물론 개인 역량의 차이도 있겠지만 경력을 인정해주는 순간 연봉의 차이도 커지기 때문에경력자들은 기술의 대한 구체적인 프로젝트 경험이나 사용유무에 대해서 중요하게 생각합니다.그렇기 때문에 첫 직장에서 주로 사용하게 되는 기술들이나 주로 하게 되는 프로젝트에 따라서진로에 큰 영향을 줄 수 있는 요소들이 많습니다.회사에서 사용되는 기술이나 개발환경들이 다른 프로젝트에서도 많이 사용되는지점점 없어지는 추세는 아닌지 내 커리어에 도움이 될 수 있는지 파악해보셔야 하는데이걸 신입이 어떻게 알겠습니까?그래서 면접볼 때 회사에 대한 궁금한 점이 있으시냐라는 질문하실 때를 놓치지 말고기업의 대한 부분, 프로젝트, 주로 사용되는 기술, 주 고객사 등등을 자세하게 여쭤보시고 완벽할 순 없지만 대략적인 나의 커리어 계획과 맞춰보시는게 좋습니다.  ​    2. 회사의 대한 정보 요새 다 기본적으로 면접보기 전부터 잡플래닛, 크레딧잡, 각종 커뮤니티 사이트를 통해서 회사 평판이나 면접 후기등을 먼저 보고 면접 대비들을 하고 계시죠?자료를 보실 때 가장 손쉽게 파악하는 건 직원 수 대비 매출액을 비교해 보는 겁니다.대략 1인당 1억씩 기준으로 두면 아 인센티브까진 몰라도 최소한 월급은 안밀리고 다닐 수 있겠구나 하고 생각하시더라구요.그리고 회계를 좀 보시는 분들은 재무제표에서 당기순이익이 어느정도 인지도 참고 삼아 확인해보세요.기업의 대한 재정상황을 다 알 수는 없지만위의 두가지 정도는 파악 한 번 해보시면 좋은 참고자료가 되실 것 같습니다.여기서 한 가지 주의 할 점은인터넷에 나온 면접후기나 회사 평판들에 대해서는 너무 100% 믿지마세요.티비 방송에 소개 된 유명한 맛집들도 먹는 사람에 따라서 맛이 있다 없다 말이 많잖아요~사람이나 상황에 따라 달라질 수 있으니까너무 신뢰하지 마시고 적당히 참고만 하시길 바랍니다!!​  ​3. 회사의 분위기를 파악하자.여러분들은 면접보러 가시면 무엇을 가장 먼저 보시나요?긴장해서 아무것도 신경 못쓴 분들도 계시고, 연봉에만 집중하시는 분도 계시겠죠?인터넷에 떠도는 많은 자료들을 보셨다면 그런 내용들이 어느정도 사실인지 아닌지를 판단할 수 있는건면접 때 회사에 대해 많이 파악을 해보는 것입니다.사무실 내에 업무 분위기는 어떤지도 참고해서 보고면접때 면접관분들이 지원자들을 대하는 태도나 말투 등도 좀 보시면서같이 일하게 될 사람들을 파악해봅니다.물론 요새 압박면접도 있지만 압박면접이라고 해서 인격적으로 사람을 무시하면 안되거든요.논리에 맞지 않은 답변에 정확한 일침을 가하는건지그냥 꼬투리잡고 무시하고 비하하는건 아닌지 잘 판단해보시길 바랍니다.​​    4. 근무조건​원하는 연봉이나 복지, 업무내용 등등 이건 개인차가 워낙 크기 때문에좋다 나쁘다라고 함부로 말하기는 어려울 것 같습니다.그렇지만 저희가 회사 다닐 때 봉사하러 다니는 건 아니잖아요.예를 들어 퇴직금이 연봉에 포함이 되어있다거나4대보험 가입을 하지 않거나 근로계약서를 쓰지 않는 경우 등최소한 근로자가 안정된 생활속에서 일을 할 수 있도록기본적인 사항을 지켜주는 회사에 입사해야 합니다.​​​    처음부터 나한테 딱 맞는 회사를 찾는 것은 하늘에 별따기, 로또에 당첨되는 경우처럼 힘들 거에요.첫 술에 배부르려 하지 마시고나도 성장하고 우리 회사도 성장할 수 있는 그런 기업문화를 만들어갑시다!!모두들 원하는 곳에 취업하시길 바랍니다!​이상 중앙에이치티에이 취업담당자였습니다!감사합니다!      <저작권자(c)중앙에이치티에이(주). 무단전재-재배포금지>   

2018-09-12

썸네일

[취업꿀팁] 면접관의 질문 의도를 파악하여 면접 준비 하는 방법

​[취업꿀팁] 면접관의 질문 의도를 파악하여 면접 준비 하는 방법 안녕하세요. 중앙HTA 교육담당자입니다.여러분들 요새 면접 많이 보고 계신가요?저희 교육기관에서 모의면접을 진행하다보면 학생들이 면접의도를 제대로 파악하지 못하고너무 솔직하게 이야기를 하거나 동문서답 하는 경우들이 종종 있습니다.이런 의사소통의 오류로 인하여 면접 때 마이너스가 되지 않길 바라는 마음에면접 질문에 대한 의도와 적절한 대처방법에 대해서 말씀 드리겠습니다!모두 집중해주세요~    이런 걸 왜 물어볼까?면접 질문 의도 파악하기!!​   면접에서 괜히 물어보는 질문은 없습니다!!​​   ㅋㅋㅋㅋㅋ 요새 유행하고 있는 박미선씨 짤을 이용해봤습니다.질문은 내가 할게. 대답은 누가 할래?면접 준비 잘해서 답변을 잘 합시다!!​     질문하는 면접관의 의도를 꿰뚫어보고​   ​적절한 답변으로 면접 합격률을 높입시다!!​​    1분 자기소개를 해보세요. ​면접의 시작 질문으로 면접관과 지원자 간의 감정적 거리를 줄이는 용도 Tip. 장황한 설명보다는 어필하고 싶은 1~2개의 핵심적인 키워드 강조! 결론(나는 이런 사람이다) > 근거(사례, 경험) 형식의 두괄식으로 답변!   친구들이 부르는 별명은 무엇인가요? 타인이 바라보는 지원자의 성격 및 특징을 파악하기 위한 질문 Tip. 자신이 내세우고자 하는 장점에 부합하는 별명을 선택 할 것!​     주말이나 휴일엔 주로 어떻게 보내시나요? 휴식을 단순히 쉬는 용도로만 활용하는지재충전과 자기개발의 기회로 활용하는지 파악하기 위한 질문  Tip. 직장인으로서 첫 출발을 준비하는 단계인 만큼 무조건 쉬거나 즐긴다는 식의 답변은 삼가할 것. ​하루는 재충전, 하루는 자기개발의 목적으로 활용한다는 답변이 가장 무난     졸업 후 공백기간이 있는데, 왜 그런가요? ​지원자의 성실성에 문제가 있는지입사 후 다른 사유로 퇴사할 우려는 없는지를 확인하는 질문  Tip. 허송세월, 불성실한 학교생활 등 면접관들의 의혹을 해소시킬 수 있는 타당한 답변을 준비 할 것. 자칫 거짓말로 둘러대는 경우 상황이 악화될 수 있으니 지양 할 것 ​      우리 회사에 지원한 동기가 무엇인가요? 우리 회사에 열정적으로 다닐 의지가 있는지를 파악하기 위한 질문 Tip. 어디서나 통할 수 있는 범용적 동기가 아니라 지원 회사에 특화 된 지원동기를 제시회사의 특징(비전, 전략 방향, 시장 내 위치, 조직문화) 중 하나가 자신의 지향점과 결합되어야 함 ​   위의 자료는 기적의 취업 면접 100문 100답 책에서 발췌하여 작성하였습니다.모두들 면접 준비 잘하셔서 꼭 취업하시길 바랄게요!!  ​<저작권자(c)중앙에이치티에이(주). 무단전재-재배포금지>   

2018-09-12

썸네일

[이응수의 IT노트] 하둡분산파일시스템 (HDFS)

 [이응수의 IT노트] 하둡분산파일시스템(HDFS:Hadoop Distributed File System)안녕하세요. 중앙HTA 이응수 강사입니다.오늘은 하둡분산파일시스템에 대해 알아보도록 하겠습니다.  하둡분산파일시스템(HDFS:Hadoop Distributed File System)은 수십 테라바이트 혹은 페타바이트 이상의 대용량 파일을 여러 서버에 저장하고, 다양한 클라이언트가 저장된 데이터를 빠르게 처리할 수 있도록 설계된 파일시스템입니다. HDFS는 저사양의 서버를 이용해서 대용량의 스토리지를 구성하고, 하나의 서버처럼 사용할 수 있도록 지원합니다. HDFS가 제공하는 다양한 API를 활용해서 파일을 읽고 저장할 수 있습니다. HDFS는 장애복구, 대용량 데이터 저장, 데이터 무결성을 지원합니다. HDFS에 데이터를 저장할 때는 복제본을 여러 서버에 함께 저장하기 때문에 데이터의 유실을 예방할 수 있고, 분산서버간에 주기적인 상태체크를 통해서 장애를 인지하고 대처할 수 있습니다. HDFS는 하나의 파일크기가 테라바이트 이상인 파일도 클러스터내의 여러 서버에 분산해서 저장할 수 있습니다. HDFS는 한번 저장된 파일은 수정할 수 없고, 읽기만 가능하기 때문에 데이터의 무결성을 유지시킬 수 있습니다. HDFS는 블록구조의 파일시스템입니다. HDFS에 저장되는 파일은 특정 크기의 블록으로 나누어서 분산된 서버에 저장되고, 기본 블록크기는 128MB입니다. HDFS는 파일을 여러 개의 블록으로 나누어서 동일한 서버에 저장하는 것이 아니라, 클러스터내의 여러 서버에 저장합니다. 그리고, 블록을 저장할 때는 복제본을 만들어서 블록당 3개씩 HDFS에 저장합니다. HDFS는 마스터-슬레이브(Mater-Slave) 형식의 아키텍처를 가지고 있습니다. HDFS에서 마스터서버를 네임노드(NameNode)라고 하고, 슬레이브 서버를 데이터노드(DataNode)라고 부릅니다.네임노드는 하둡 분산파일시스템의 메타데이터(파일명, 디렉토리, 크기, 권한 및 파일에 대한 블록매핑정보)를 관리하고, 데이터노드를 모니터링하며, 클라이언트의 다양한 요청을 접수받습니다. 데이터노드는 HDFS에 저장되는 파일이 블록으로 나뉘어져서 저장되는 서버입니다. 네임노드는 HDFS 시스템을 유지시키기위한 메타데이터를 메모리에서 관리하고, 재부팅시 유실을 방지하기 위하여 fsimage와 editslog파일을 생성해서 hdfs의 모든 변경이력을 저장합니다. 데이터노드는 네임노드로 3초마다 하트비트(heartbeat)메세지를 전송합니다. 하트비트에는 데이터노드의 상태정보와 데이터노드에 저장된 블록에 대한 블록리포트가 포함되어 있습니다. 네임노드는 하트비트를 이용해서 데이터노드를 모니터링하고, 일정시간동안 하트비트가 전송되지 않는 데이터노드를 장애가 발생한 노드로 판단합니다. 데이터노드에서 장애가 발생하면 해당 데이터노드에 저장되었던 블록을 새로운 데이터노드를 복제해서 복제본 수가 일정하게 유지되도록 합니다. 이와 같은 방식으로 HDFS는 클러스터내의 분산된 데이터노드에 대용량의 파일을 블록으로 나누어서 저장하고, 네임노드는 HDFS내의 디렉토리정보, 저장된 파일의 정보, 블록의 매핑정보등을 관리하고, 장애발생에 대처합니다.  하둡은 사용자가 HDFS를 쉽게 할 수 있도록 유닉스 계열의 명령어와 유사한 형태의 셸명령어를 제공합니다. 하둡 셸명령어는 $HADOOP_HOME/bin/hadoop fs -명령어 매개변수 와 같은 형식으로 실행할 수 있고, 자세한 사용법은 $HADOOP_HOME/bin/hadoop fs -help 로 확인할 수 있습니다. 셸명령어 중에서 자주 사용되는 명령어 몇 가지를 사용해보도록 하겠습니다. 먼저 HDFS에 디렉토리를 생성해보도록 하겠습니다. HDFS는 /user/사용자명 디렉토리가 필요합니다. 절대경로없이 파일이나 디렉토리를 생성하게 되면 전부 /user/사용자명 디렉토리 아래에 생성되기 때문에 가장 먼저 사용자디렉토리를 생성해야 합니다. $HADOOP_HOME/bin/hadoop fs -mkdir /user $HADOOP_HOME/bin/hadoop fs -mkdir /user/hta 혹은     $HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hta 명령을 실행시켜서 사용자디렉토리를 생성합니다. 디렉토리 생성시 절대경로 없이 디렉토리명만 적으면 /user/hta 디렉토리 아래에 생성됩니다.     $HADOOP_HOME/bin/hadoop fs -mkdir testdir 생성된 디렉토리나 파일은     $HADOOP_HOME/bin/hadoop fs -ls / 명령으로 확인할 수 있습니다. 로컬파일시스템의 test.txt 파일을 앞에서 생성한 HDFS의 testdir 디렉토리에에 저장해보겠습니다.     $HADOOP_HOME/bin/hadoop fs -put test.txt testdir/ $HADOOP_HOME/bin/hadoop fs -copyFromLocal test.txt testdir/HDFS에 저장된 파일을 위와 같이 확인해볼 수 있습니다. 맵리듀스 프로그램을 이용해서 대용량의 파일을 처리하기 위해서는 위의 명령어를 이용해서 파일을 HDFS로 복사한 다음에 맵리듀스 프로그램을 실행합니다. HDFS에 저장된 파일을 내용을 확인해보겠습니다.     $HADOOP_HOME/bin/hadoop fs -cat testdir/test.txt     $HADOOP_HOME/bin/hadoop fs -tail testdir/test.txt를 실행하면 파일의 맨 마지막 내용을 확인해볼 수 있습니다. HDFS에 복사된 파일의 내용을 확인하거나 맵리듀스 프로그램을 실행한 후 출력결과를 확인할 때 사용할 수 있습니다. 마지막으로 HDFS에 저장된 디렉토리나 파일을 삭제해보도록 하겠습니다.     $HADOOP_HOME/bin/hadoop -rm testdir/test.txt $HADOOP_HOME/bin/hadoop -rm -r testdir * 하우디렉토리까지 삭제. 을 실행하면 파일이나 디렉토리를 삭제할 수 있습니다. 하둡은 다양한 셸명령어를 지원합니다. 셸명령어에 대한 자세한 내용은 하둡 도큐먼트를 참조하시기 바랍니다. 지금까지 하둡분산파일시스템의 간단한 특징과 셸명령어를 살펴보았습니다.다음에는 하둡분산파일시스템으로 빅 데이터를 수집하는 방법에 대해서 다루어 보도록 하겠습니다.  <저작권자(c)중앙에이치티에이(주). 무단전재-재배포금지>

2018-02-14

썸네일

[이응수의 IT노트] 맵리듀스 애플리케이션을 활용해서 데이터 분석하기

[이응수의 IT노트] 맵리듀스 애플리케이션을 활용해서 데이터 분석하기안녕하세요. 중앙HTA 이응수 강사입니다.오늘은 하둡의 맵리듀스 프레임워크를 활용해서 아래에 제시된 데이터를 분석하는간단한 애플리케이션을 작성해보도록 하겠습니다.입력데이터(종관기상관측자료 - 2016년 서울)파일명 : 108_DAY_2016.csv지점,일시,평균기온(°C),최저기온(°C),최저기온 시각(hhmi),최고기온(°C),최고기온 시각(hhmi)108,2016-01-01,1.2,-3.3,456,4,1442108,2016-01-02,5.7,1,744,9.5,1514중간 생략108,2016-02-23,0.7,-4.5,2357,4.5,1444108,2016-02-24,-3,-6.8,741,2.2,1429108,2016-02-25,-0.2,-5.8,248,5.7,1606108,2016-02-26,2.2,-3.2,634,7.5,1502108,2016-02-27,3.3,0.5,732,8.1,1424108,2016-02-28,0.7,-2.6,2355,6.9,1133108,2016-02-29,-3.8,-5.9,2359,-1.1,1605(자료출처 : https://data.kma.go.kr/data/grnd/selectAsosList.do?pgmNo=34)위의 데이터는 2016년 서울 관측소에서 측정된 기상데이터의 일부입니다.위의 데이터를 사용해서 2016년 월별 최고 기온을 구하는 맵리듀스잡을 작성하도록 하겠습니다. 먼저 분석대상 데이터를 하둡 파일시스템으로 복사합니다.기상데이터를 저장할 디렉토리를 만듭니다.$$HADOOP_HOME/bin/hadoop -mkdir input_kma다운받은 기상데이터를 하둡 파일시스템에 추가합니다.$$HADOOP_HOME/bin/hadoop fs -put 108_DAY_2016.csv input_kma하둡 파일시스템으로 파일이 복사되었는지 확인해봅니다.$$HADOOP_HOME/bin/hadoop fs -ls input_kma이클립스에서 하둡 클라이언트 프로그램 개발환경을 구성합니다.메이븐 프로젝트를 생성하고, pom.xml에 hadoop-client 의존성을 추가합니다. 하둡의 맵리듀스 작업은 맵 단계와 리듀스 단계로 구성됩니다.본 예제에서 맵 단계의 입력 데이터는 여러 행으로 구성된 기상 데이터입니다.맵 단계의 입력은 각 행이 시작되는 지점까지의 위치를 나타내는 오프셋을 Key로, 각 행의 텍스트를 Value로 전달받습니다.맵 함수는 보통 key는 무시하고, value에서 원하는 데이터를 추출하거나 변형합니다.   맵 함수는 Mapper 클래스를 상속받고, Mapper클래스에 정의된 추상메소드 map( ) 메소드를 재정의합니다.Mapper클래스는 네 개의 제네릭 타입을 가집니다.예제에서 입력키는 long타입의 오프셋, 입력값은 한 행의 내용, 출력키는 월, 출력값은 Double타입의 기온입니다.하둡은 자바의 기본자료형 대신 자체적인 기본 데이터 타입을 제공하는데, 자바의 Long에 해당하는 LongWritable, 자바의 String에 해당하는 Text,자바의 Integer에 해당하는 IntWritable, 자바의 Double에 해당하는 DoubleWritable 등을 제공합니다.map( )메소드의 구현내용은 한 행의 텍스트를 입력값으로 전달받아서 자바 String으로 변환하고, 각 행에서 월과 그날의 최고 기온을 추출했습니다.map( )메소드는 데이터를 출력하기 위해서 Context객체를 제공합니다.예제에서는 Text를 키로 DoubleWritable을 값으로 사용하는 데이터를 출력레코드로 기록합니다.맵 함수 입력(오프셋 텍스트)맵 함수 출력(월 기온) *각 월별로 30개의 데이터, 총 365개의 레코드가 출력됩니다.(0 108,2016-01-01,1.2,-3.3,456,4,1442)(50 108,2016-01-02,5.7,1,744,9.5,1514)중간 생략(500 108,2016-02-23,0.7,-4.5,2357,4.5,1444)(550 108,2016-02-24,-3,-6.8,741,2.2,1429)(600 108,2016-02-25,-0.2,-5.8,248,5.7,1606)(650 108,2016-02-26,2.2,-3.2,634,7.5,1502)(01 4.0)(01 9.5)중간 생략(02 4.5)(02 2.2)(02 5.7)(02 7.5) 리듀스단계의 리듀스 함수도 Reducer 클래스를 상속받고, Reducer클래스에 정의된 추상메소드 reducer( ) 메소드를 재정의합니다.Reducer 클래스 역시 네 개의 제네릭 타입을 가집니다. 리듀스의 입력 타입은 맵단계의 출력 타입과 동일합니다.리듀스의 출력타입은 Text와 DoubleWritable인데 Text에는 월, DoubleWritable는 해당 월의 최고 기온을 나타냅니다. 맵함수의 출력이 리듀스 함수의 입력으로 보내지는 과정은 맵리듀스 프레임워크에 의해 처리됩니다.이 과정에서 맵함수의 출력레코드는 키를 기준으로 정렬되고 그룹화됩니다.예제에서는 맵 함수의 출력키가 월, 출력값은 기온이기 때문에 출력키인 월을 기준으로 정렬하고,같은 월을 가진 기온들을 그룹화해서 아래와 같은 형식의 입력데이터가 리듀스함수의 입력으로 전달됩니다.리듀스 함수에서는 그룹화된 기온데이터에서 해당 월의 가장 높은 기온을 찾고, 그 결과를 리듀스 함수 출력레코드로 기록합니다. 리듀스 함수 입력(월, [해당 월의 기온들])리듀스 함수 출력(월, 최고기온)(01, [4.0, 9.5, ....])(02, [4.5, 2.2, 5.7, 7.5, ....])중간 생략(09, [20.5, 21.2, 18.7, 23.5, ....])(10, [12.5, 17.2, 13.7, 15.5, ....])(11, [10.5, 11.2, 9.7, 7.5, ....])(12, [8.5, 9.2, 10.7, 6.5, ....])(01 9.5)(02 7.5)중간 생략(09 23.5)(10 17.2)(11 11.2)(12 10.2)   맵리듀스 잡을 실행하기 위해서는 드라이브 클래스가 필요합니다. 드라이버 클래스에서는 맵리듀스잡 객체를 생성하고,맵리듀스잡에 드라이버 클래스, 맵클래스, 리듀스클래스, 출력타입 등을 설정합니다.  맵클래스, 리듀스클래스, 드라이버 클래스의 구현이 완료되면 jar 파일로 묶습니다.이클립스를 사용 중이라면 이클립스 "Run As -> Maven Build"를 선택한 후 goal 항목에 "clean install"을 입력하면 jar 파일이 생성됩니다.생성된 jar파일(예제에서는 hadoop-mapreduce.jar입니다)은 FTP 프로그램을 활용해서 Hadoop이 실행중인 Linux 머신으로 업로드합니다.jar파일 업로드가 완료되면 터미널에서 아래와 같이 입력합니다.맵리듀스 프로그램을 실행하면 아래와 같은 로그가 출력됩니다.중간 생략로그 내용에서 가장 중요한 내용을 Map input records와 Reduce input records와 Reduce output records입니다.본 예제에서는 맵함수입력은 366건, 리듀스함수 입력은 366건이 입력되어, 리듀스함수 출력이 12건 생성되었습니다. 맵리듀스 프로그램의 실행이 완료되면 출력파일 경로로 지정된 곳에 파일이 생성됩니다. hadoop 파일 시스템 명령어로 결과를 조회할 수 있습니다.실행해보면 월별로 최고기온이 출력된 것을 확인할 수 있습니다.맵리듀스 프로그램의 실행이 완료되면 출력파일 경로에 여러 개의 파일과 폴더가 저장된 것을 확인할 수 있습니다.이 중에서 리듀스의 출력결과는 part-r-0000으로 저장됩니다. 이상으로 기상데이터로부터 월별 최고기온을 분석하는 맵리듀스 프로그램을 작성해보았습니다.맵리듀스프레임워크를 활용하면 다양한 방법으로 하둡분산파일시스템에 저장된 대용량의 데이터를 분석할 수 있습니다.다음에는 하둡분산파일시스템의 주요 파일시스템 명령어들을 살펴보겠습니다.<저작권자(c)중앙에이치티에이(주). 무단전재-재배포금지>

2018-01-24

썸네일

[이응수의 IT노트] 하둡(Hadoop)의 맵리듀스(Map/Reduce) 프레임워크

[이응수의 IT노트] 하둡(Hadoop)의 맵리듀스(Map/Reduce) 프레임워크안녕하세요. 중앙HTA 이응수 강사입니다.오늘 이응수의 IT노트에서는 하둡(Hadoop)의 맵리듀스(Map/Reduce) 프레임워크를 살펴보도록 하겠습니다.  맵리듀스(Map/Reduce)는 분산 환경에서 <Key, Value> 구조를 이용해서 대규모 데이터를 처리하기 위한 병렬 컴퓨터 프레임워크 입니다. Map/Reduce는 데이터를 여러 조각으로 분할한 후 분산환경에서 <Key, Value> 구조로 데이터를 병렬처리하고, 이를 가공해서 <Key, Value> 구조로 출력합니다. 하둡은 HDFS 환경에서 이런 작업을 수행하는 프로그램을 손쉽게 작성할 수 있도록 Map/Reduce 프레임워크를 제공합니다.  하둡의 Map/Reduce 프레임워크는 map과 reduce 두 단계로 데이터를 처리합니다.map은 산재된 여러 데이터들을 <Key, Value>의 연관성이 있는 데이터로 묶는 작업을 수행하고, reduce는 map 작업 결과에서 중복 데이터를 제거한 후 최종 데이터를 추출하는 작업을 수행합니다.  Map/Reduce 프레임워크에서 데이터의 처리절차는 3단계에 걸쳐서 처리됩니다. 1단계에서는 각종 원시 데이터를 <Key, Value> 구조의 쌍으로 묶어서 map함수의 입력으로 보내는 단계입니다.          원시 데이터가 파일인 경우 Key는 라인번호가 되고, Value는 그 라인의 텍스트 데이터가 됩니다.          map 함수에서는 분석 대상 데이터를 추출하고, 원하는 형태로 데이터를 가공합니다.         map 함수의 실행결과로 얻어지는 출력 데이터도 <Key, Value> 구조의 데이터입니다.2단계에서는 map 함수의 출력 데이터를 Key를 기준으로 정렬해서 reduce 함수로 보냅니다.                    정렬된 데이터는 reduce함수의 입력값이 됩니다. 이 과정을 suffle라고 합니다.3단계에서 reduce함수는 2단계로부터 받은 입력데이터를 분석해서 최종 결과값을 구합니다.  Map/Reduce 프레임워크의 각 단계별 데이터를 흐름은 아래와 같습니다. 위의 그림에서 개발자는 map함수와 reduce함수를 구현하기만 하면 됩니다. Map/Reduce프레임워크는 다양한 데이터소스로부터 데이터를 <K1, V1>형태로 만들어서 map함수의 입력값으로 넣어 줍니다. map함수에서는 입력데이터에서 분석대상 데이터를 추출해서 <K2, V2>형태로 변환하는 작업만 수행하면 Map/Reduce 프레임워크는 suffle 과정을 수행해서 동일한 K2를 가지는 값들을 묶어서 <K2, list(V2)> 구조로 만들고 정렬해서 reduce함수의 입력값으로 제공합니다. reduce함수에서는 <k2, list(V2)> 형태의 전달된 동일한 Key를 가지는 값을 분석해서 <K3, V3>형태의 최종 결과를 만들어냅니다.즉, 개발자는 입력데이터를 변형해서 분석에 적합한 데이터 형태로 변환하는 map함수와 데이터를 분석해서 최종 결과데이터를 출력하는 reduce함수의 구현하면 분산환경의 여러 노드에서 실행되는 병렬처리 프로그램을 간단히 구현할 수 있습니다.위에서 설명한 데이터 흐름을 단어 빈도수 세기 프로그램을 예로 들어서 나타내보도록 하겠습니다.파일로부터 한 라인씩 데이터를 읽어서 map 함수에 <K1, V1>형태로 데이터를 제공하면 최종결과로 <K3, V3>형태의 단어별 빈도수를 출력하는 Map/Reduce 프로그램에서의 데이터 흐름입니다.  Map/Reduce 프레임워크를 이용해서 작성된 프로그램은 일반적인 프로그램과는 다른 특징을 가지게 됩니다. 첫번째는 데이터가 있는 서버로 코드가 전송됩니다. 전통적인 프로그램은 데이터를 가져와서 처리하는 방식이라면,   Map/Reduce 프레임워크는 대용량 데이터의 처리 속도를 높이기 위해서 데이터가 위치한 각 노드로 처리 코드를    전달해서 데이터를 처리합니다.두번째는 <Key, Value> 형태의 데이터셋트로 데이터를 변형해서 처리합니다. 세번째는 실시간 데이터 처리보다는 데이터를 처리하는데 많은 시간이 소요되는 오프라인 배치 처리 작업에 매우 적합합니다.  Map/Reduce 프레임워크의 주요 API를 살펴보겠습니다. Map/Reduce 프레임워크에서 제공하는 기본 데이터 타입 클래스를 알아보고, Mapper클래스와 Reducer 클래스에 대하여 알아보겠습니다. 그리고, MapReduce를 실행하는 Job클래스에 대해서도 알아보겠습니다.  Map/Reduce 프레임워크는 정수, 실수, 불린, 문자열을 다루기 위한 기본 데이터 타입 클래스를 제공합니다. Map/Reduce 프레임워크에서 제공하는 데이터타입 클래스는 WritableComparable<T> 인터페이스를 구현하고 있습니다. Writable 인터페이스는 직렬화와 관련된 메소드를 정의하고 있고, WriteableComparable<T> 인터페이스는 Writable 인터페이스에 값을 비교할 수 있는 메소드가 추가된 인터페이스입니다. Map/Reduce 프레임워크에서는 데이터의 입력과 출력 및 데이터를 정렬하는데 필요한 기능을 Writable 인터페이스와 WritableComparable 인터페이스에 정의하고, 이를 구현한 데이터 타입 클래스를 제공하고 있는 것입니다.Map/Reduce 프레임워크의 기본 데이터 타입 클래스는 BooleanWritable, ByteWritable, intWritable, LongWritable, FloatWritable, DoubleWritable, MapWritable, NullWritable, ArrayWritable, Text 등입니다. 대부분의 데이터 타입 클래스는 값을 반환하는 get() 메소드와 값을 저장하는 set(값) 메소드를 제공합니다. Text는 문자열을 다루는 데이터 타입 클래스입니다. Map/Reduce 프레임워크는 WritableComparable<T> 인터페이스를 구현해서 사용자정의 데이터 타입 클래스를 구현할 수 있습니다. 아래는 간단한 사용자정의 데이터타입 클래스입니다. Map/Reduce 프레임워크의 Map클래스와 Reduce클래스를 알아보겠습니다.Mapper클래스는 아래의 클래스를 상속받고, map메소드를 재정의합니다.Mapper 클래스의 map 메소드에서는 <KEYIN, VALUEIN> 타입의 데이터를 가공해서 <KEYOUT, VALUEOUT> 타입으로 출력합니다. map함수는 각각의 <Key, Value>마다 한번씩 실행됩니다.Reducer클래스는 아래의 클래스를 상속받고, reduce메소드를 재정의합니다. Reducer클래스의 reduce메소드에서는 KEYIN타입의 값을 여러개 전달받아서 집계한 최종결과를 <KEYOUT, VALUE> 타입으로 출력합니다. reduce메소드는 각 Key별로 한번씩 수행됩니다.Mapper클래스와 Reducer클래스를 활용한 Map/Reduce 프로그램은 다음 시간에 간단한 예제를 통해서 알아보도록 하겠습니다.  마지막으로 Job클래스 입니다. Job클래스는 Map/Reduce 작업를 실행하는 Driver클래스에서 필요한 정보를 지정할 때 사용되는 클래스입니다.Job 클래스는 Map/Reduce 작업의 Key클래스와 Value클래스, 실행할 Mapper클래스와 Reducer클래스, 입력포맷형식과 출력포맷형식, 입력데이터 경로와 출력데이터 저장경로 등을 지정하고, Map/Reduce 작업을 실행시킵니다.일반적인 Driver클래스에서 Job 클래스의 설정은 아래와 같은 형태입니다.  이상 맵리듀스(Map/Reduce) 프레임워크에 대해서 간단히 살펴보았습니다. 다음에는 Map/Reduce 프레임워크를 활용해서 간단한 예제를 작성하고 실행결과를 확인해보도록 하겠습니다.날씨가 무척 쌀쌀해졌네요.다들 감기조심하시고 건강 챙기시길 바랍니다.감사합니다.<저작권자(c)중앙에이치티에이(주). 무단전재-재배포금지>

2017-11-24

  1. 1
  2. 2
  3. 3

TOP