728x90

^ spark_home 이 심볼릭 링크를 가리키도록 설정된 값 확인하기.

/usr/bin 폴더 -> 전체 시스템의 사용자 프로그램이 저장되는 기본 위치.

실제로 설치된 위치 보려면,

ls -al /경로/

심볼릭 링크 : 파일이나 폴더에 대한 일종의 참조. 심볼릭 링크를 사용하면 파일 시스템 내 서로 다른 두 위치에서 같은 파일에 접근 가능.
!= 파일/폴더의 복사본 아님.
심볼릭 링크가 폴더를 참조하면 마치 실제 타깃 폴더에 들어온 것처럼 심볼릭 링크의 폴더 내부를 탐색할 수 있음.
변경한 모든 내용은 타깃 폴더에 바로 적용되며, 심볼릭 링크에도 반영됨.
ex. vi 로 심볼릭 링크파일 편집 시 타깃 파일 편집한 것과 같음. 두 위치 모두에서 편집내용 확인 가능.

심볼릭 링크에서는 편하게 ex. 자바/ 하둡 형식으로 가능.


----

가상머신에 하둡 설치 시,
사전 준비없이 hadoop fs -ls 명령으로 HDFS 에 접속해 파일 시스템에 쿼리를 수행할 수 있는 것은 가상 머신이 부팅하면서
HDFS 데몬 프로세스를 자동으로 시작했기 때문이다.

start-dfs.sh 로 시작 가능.
---

스파크 커뮤니티는 2개월마다 새로운 버전을 릴리스 할 정도로 활발한데,
여러 버전의 스파크를 관리하고 현재 사용할 버전을 선택할 수 있는 방법 중 하나는

심볼릭 링크 활용 )

이를 사용하면 스파크 버전과 관계없이 모든 스파크 프로그램, 스크립트, 환경 설정 파일에서 스파크 설치 폴더를 참조할 때 항상
지정한 폴더를 사용할 수 있다.


(1) spark shell

스파크를 사용하는 방법은 두 가지다.
1 - 스파크 라이브러리.
: 스파크 api를 사용해 스칼라, 자바, 파이썬 독립 프로그램을 작성하는 것.
애플리케이션 코드를 작성하고 스파크에 제출해 실행한 후, 에플리케이션이 파일로 출력한 결과를 분석하는 과정을 거친다.
2 - 스파크의 스칼라 셸 / 파이썬 셸 사용
: 스파크 셸에서 작성한 프로그램은 셸을 종료하면 삭제되므로 주로 테스트/일회성 작업에 사용됨.

PATH에 스파크 bin 디렉토리를 등록해놓으면 spark-shell / pyspark 를 입력해도 스파크 셸을 실행할 수 있다.


(2) log4j

스파크의 오랜 이전 버전에는 콘솔에 INFO 로그가 상세하게 출력되었지만, 최신 버전은 이 문제를 개선했다. 하지만 일부 유용한 로그마저 출력에서 생략해 다소 불편하다.

스파크의 LOG4J 설정을 변경해 스파크 셸에는 오류 로그만 출력하고 나머지 로그들은 추후 문제 진단에 사용할 수 있도록
스파크 루트 폴더의 logs/info.log 파일에 저장해보자.
(log4j : 자바의 로깅 라이브러리.)


스파크 셸을 실행하면

출력한 내용 중

Spark context : 스파크 접속하고 세션 설정, 잡 실행관리, 파일 읽기/쓰기 작업 할 수 있다.
Spark session

스파크와 교신할 수 있는 일종의 창구이다.



간단 예제) 스파크 API 사용하여 파일 읽어들이고, 줄 개수 세어보기


맨 위의 경로( 루트 디렉토리) 에 테스트 용 파일을 만들어두고,
파일의 전체 줄 개수를 세고,
'dd' 가 등장한 줄만 포함하는 ddLines 컬렉션 새로 만들음.


RDD의 개념

위의 licLines, ddLines 는 마치 평범한 스칼라 컬렉션 같지만,
이는 RDD 라는 스파크 전용 분산 컬렉션이다.

RDD 는 데이터를 조작할 수 있는 다양한 변환 연산자를 제공하지만, 변환 연산자는 항상 새로운 RDD 객체를 생성한다.
즉 한 번 생성된 RDD 는 절대 바뀌지 않는 불변의 성질이 있다.

이는 분산 시스템에서 가장 중요한 장애 내성을 직관적인 방법으로 보장할 수 있다.

RDD 연산자는 크게 변환/행동 두 유형으로 나눈다.

변환 연산자 : RDD의 데이터를 조작해 새로운 RDD를 생성한다. (filter,map 함수)
행동 연산자 : 연산자를 호출한 프로그램으로 계산 결과를 반환하거나 RDD 요소에 특정 작업을 수행하려고 실제 계산을 시작하는 역할을 한다. (count, foreach)


1. map 변환 연산자

parallelize 메서드는 Seq를 받아
Seq 객체의 요소로 구성된 새로운 RDD 를 만든다.
(Seq : 스파크의 컬렉션 인터페이스. 이 인터페이스를 구현한 클래스에는 Array 나 List 등이 있다.)

이 Seq 객체의 요소는 여러 스파크 실행자로 분산된다.
parallelize 메서드는 makeRDD 라고 alias 로 호출할 수 있다.


map 함수로 RDD 타입 바꾸기

+ Recent posts