반응형

1. 서론

이번 포스팅에서는 앞 포스트에서 설치한 CDH와 개별 어플리케이션과의 연동 방법에 대해 알아 보도록하겠습니다.

 

2. 스파크 클라이언트

MR, Spark 모두 Job을 CDH 서버에서 제출하여 수행해도 됩니다.

 

하지만 일반적으로, CDH 서버군들은 YARN, HDFS, SPARK 등 처리와 관리를 위한 용도로만 프로세스를 띄우게 하고

별도 클라이언트 어플리케이션을 수행하는 서버군이 있습니다.

 

그리고, 클라이언트는 Job을 YARN에게 제출하여 CDH에서 작업을 처리하도록 한 후 결과를 받습니다.

 

아래는 간단한 클라이언트와 CDH 간의 그림입니다.

 

 

 

 

 

 

 

 

반응형

 

 

 

 

 

 

 

 

3. CDH와 연동

 

클라이언트 서버에서 원하는 서비스들을 별도로 설치하여 사용할 수 있습니다.

 

하지만, 클라이언트에 CDH의 각 서비스 설정을 옮겨야 하는 번거로움이 있으며 실수할 수 있는 포인트가 생깁니다.

또한, 클라이언트와 CDH의 서비스 버전이 상이한것보다는 동일하게 운영 시 위험성이 낮습니다.

여기서 서비스라고 하는 것들은 Hdfs, Yarn, Spark 등등을 의미합니다.

 

저는 위와 같은 이유로 CDH 에서 한 서버를 선택하여 rsync를 통해 설정 정보를 모두 가져오도록 했습니다.

 

방법은 아래와 같습니다.

 

1) 터널링

 

먼저 CDH 중 서버 한개와 클라이언트 서버와 터널링을 진행합니다.

 

아래와 같이 ssh-keygen을 통해 클라이언트 서버에 public key를 생성합니다.

 

ssh-keygen
cd ~/.ssh
cat id_rsa.pub

 

 

cat으로 출력 된  public key를 CDH 서버 한대의 .ssh 디렉터리로 이동하여 authorized_keys 파일에 추가해줍니다.

 

이제 수동으로 클라이언트 서버에서 CDH 서버로 ssh 연결을 한번 수행 해줍니다.

 

ssh CDH-10-server

 

 

2) rync

 

CDH의 경우 /opt/cludera/parcels 로 설정 정보와 lib 등등 모든 정보를 놓습니다.

 

하지만, 루트 디렉터리에 용량이 꽉차 disk full 이 날 수 있으니 아래와 같이 큰 disk가 마운트 되어 있는 디렉터리로 심볼릭링크를 걸어 줍니다.

 

sudo mkdir -p /home1/irteamsu/opt/cloudera
sudo ln -s /home1/irteamsu/opt/cloudera /opt/cloudera

 

그리고 이제 rync를 통하여 데이터를 가져와 줍니다.

 

 

3) PATH 설정

 

다 가져오셨다면 이제 PATH 설정을 해주기 위해 아래와 같이 bash_profile 을 수정합니다.

 

vim ~/.bash_profile

 

.bash_profile 파일을 vim 에디터로 엽니다.

 

아래와 같이 설정을 추가합니다.

 

HADOOP_HOME=/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554
SPARK_HOME=/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/spark
export HADOOP_CONF_DIR=/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop/etc/hadoop
export PATH=$HADOOP_HOME/bin::$SPARK_HOME/bin:$PATH

 

CDH 버전이 다르다면 위 경로를 자신의 버전에 맞게 바꿔서 사용하시면 됩니다.

 

마지막으로 아래와 같이 source 명령어를 통해 .bash_profile 의 내용을 반영합니다.

 

source ~/.bash_profile

 

4) 확인

 

아래와 같이 hdfs 명령어와 spark-shell 명령어가 정상 동작하는것을 확인할 수 있습니다.

 

추가로 hdfs 명령어 시 CDH에 있는 hdfs 에 있는 디렉터리가 나오는것을 볼 수 있습니다.

 

 

위와 같은 방법으로 클라이언트를 만드는 것의 단점이 있습니다.

 

바로 rsync로 지정한 디렉터리에 있는 모든 설정을 다 가져온다는 것 입니다.

클라이언트 서버는 spark를 사용하지 않는데도 spark 설정이 들어오게 되는 것 처럼요.

 

또한, 클라이언트가 추가 될 때마다 터널링을 수행해야 한다는 점입니다.

 

이러한 문제점들은 사실상 파일 서버를 두어 설정 파일들을 중앙 관리하도록 한다면 크게 문제가 되지 않을 것입니다.

 

지금은 예제를 위해 간단히 rsync를 통해 가져오도록 해보았습니다.ㅎㅎ

 

4. 마무리

 

이렇게, Spark에 대한 포스팅을 완료했습니다.

 

다음 포스팅에서는 Hdfs기반 Nosql로 많이 사용하는 Hbase에 대해 진행하도록 하겠습니다.

반응형

'BigData > Spark' 카테고리의 다른 글

(7) Apache Zeppelin  (0) 2020.04.20
(6) 스트럭처 스트리밍  (0) 2020.03.31
(5) 스파크 스트리밍  (0) 2020.03.19
(4) 스파크 SQL  (0) 2020.03.17
(3) 스파크 설정  (0) 2020.03.13

+ Recent posts