본문 바로가기

hadoop

2. 하둡설치, hive 설치

728x90
반응형

2. 하둡설치


1. java 설치

하둡이 자바로 만들어져있기 때문에 java 설치해야한다.


 

2. java 환경설정

java 홈디렉토리가 어디다 라고 지정


 

3. keygen 생성

여러노드(서버)들을 묶어서 하둡을 운영할 것이기 때문에

컴퓨터에서 상대방 컴퓨터로 접속할 패스워드를 매번 물어보지않고

그냥 바로 접속하게 하려면 keygen 생성해야한다.


 

4. 하둡 설치파일을 올린 압축을 푼다

hadoop-1.2.1.tar.gz


 

5. 하둡 홈디렉토리를 설정한다.


6. 하둡을 운영하기 위한 xml 파일 3개를 수정한다.

1. core-site.xml

2. mapred-site.xml

3. hdfs-site.xml

 


7. 하둡 네임노드를 포멧한다.

8. 하둡을 시작시킨다.

9. 하둡이 시작되었는지 확인한다.

 

 

파일 <실습_00.Hadoop install.txt > 보면서 진행함

#####################################

#          JDK 1.7 설치             #

#####################################

[oracle@edydr1p2 ~]$ java -version

java version "1.6.0"

OpenJDK Runtime Environment (build 1.6.0-b09)

OpenJDK Server VM (build 1.6.0-b09, mixed mode)

 

[oracle@edydr1p2 ~]$ su -

Password: oracle

 

[root@edydr1p2 ~]# mkdir -p /u01/app/java     자바 홈디렉토리를 만든다

[root@edydr1p2 ~]# mv /home/oracle/jdk-7u60-linux-i586.gz /u01/app/java/ 

[root@edydr1p2 ~]# cd /u01/app/java/

[root@edydr1p2 java]# tar xvzf jdk-7u60-linux-i586.gz   자바 jdk 1.6버젼 압축파일을 푼다

...

jdk1.7.0_60/bin/jrunscript

jdk1.7.0_60/release

jdk1.7.0_60/THIRDPARTYLICENSEREADME-JAVAFX.txt

jdk1.7.0_60/COPYRIGHT

 

자바 홈디렉토리의 소유자를 root 로 변경한다.

 

[root@edydr1p2 java]# chown -R root:root jdk1.7.0_60

[root@edydr1p2 java]# exit

 

 

리눅스 환경설정 파일인 .bash_profile 에 자바 홈디렉토리가 "어디다" 라고 설정하는 작업

 

[root@edydr1p2 java]# su - oracle

[oracle@edydr1p2 ~]$ vi ~/.bash_profile  물결이 home.  아래2 export 추가해야함.

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

export JAVA_HOME=/u01/app/java/jdk1.7.0_60        

 

위에썼던 디렉토리위치를 JAVA_HOME 이라고 명명

(확인하는 방법: [orcl:~]$ echo $JAVA_HOME------>>>결과-->>/u01/app/java/jdk1.7.0_60)

 

 

export PATH=/u01/app/java/jdk1.7.0_60/bin:$PATH   

 

PATH

  리눅스에 설치된 프로그램들을 실행하기 위해 프로그램들을 실행하는 실행파일이

    어디에 위치하고 있다는 것을 알려주기 위한 환경설정 변수

 

  내컴퓨터-설정-고급설정-환경변수-path 살펴보면

  프로그램이 있는 위치가 나온다


   어떤 프로그램이든 그것을 실행시키려면 위치에 가서 해야 하는데,

   자바홈을 path 지정해놔서 어느곳에서든 hive 실행시킬 있는 것이다.


 

$ cd .bash_profile

열고

아래에

 

export HIVE_HOME=/home/oracle/hive-0.12.0

export PATH=$HIVE_HOME/bin:$PATH

 

추가하면

 

$ cd /home/oracle/hive-0.12.0/bin

$ ./hive

 

이렇게 접속했던 hive

 

[orcl:~]$ . .bash_profile

[orcl:~]$ hive

 

 

 

export CLASSPATH=.:/usr/java/jdk1.7.0_60/lib:$CLASSPATH

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

 

[oracle@edydr1p2 ~]$ . .bash_profile

[oracle@edydr1p2 ~]$ java -version

java version "1.7.0_60"

Java(TM) SE Runtime Environment (build 1.7.0_60-b19)

Java HotSpot(TM) Server VM (build 24.60-b09, mixed mode)

 

#####################################

#          Hadoop 설치              #

#####################################

 

2.  keygen 생성

keygen 왜 생성하는가?

 하둡을 SSH 프로토컬을 이용해 하둡 클러스터간의 내부통신을 수행한다.

 

하둡을 설치하고 나서 하둡을 시작하는 명령어인 start-all.sh  스크립트를 수행하면

네임노드가 설치된 서버에서 데이터 노드가 설치된 서버로 접근해

데이터 노드와 태스크 트래커를 구동하게 된다.


그런데 ssh 이용할 없다면 하둡을 실행할 없다.

 

키를 가지고 있으면 ssh 다른노드로 접속할 패스워드없이

접속할 있다.

 

 

[oracle@edydr1p2 ~]$ cd

[oracle@edydr1p2 ~]$ rm -rf .ssh

[oracle@edydr1p2 ~]$ ssh-keygen -t rsa

 

Generating public/private rsa key pair.

Enter file in which to save the key (/home/oracle/.ssh/id_rsa):

Created directory '/home/oracle/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/oracle/.ssh/id_rsa.

Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.

The key fingerprint is:

06:52:a4:53:9e:fd:1b:b8:e4:42:2b:a5:34:cb:a4:17 oracle@edydr1p2.us.oracle.com

 

[oracle@edydr1p2 ~]$ cat /home/oracle/.ssh/id_rsa.pub >> /home/oracle/.ssh/authorized_keys

네임노드에서 공개키를 설정하고 공개키(authorized_keys)

다른 데이터 노드에 복사해줘야한다.

지금 우리 환경이 짝꿍서버로 접속할 없는 환경이므로

ssh 테스트 해보기 위해서 서버로 접속해보기 위해

아래와 같이 테스트를 한다.

                           나의 리눅스 서버의 컴퓨터 이름

                                          

[oracle@edydr1p2 ~]$ ssh edydr1p2.us.oracle.com

...

Are you sure you want to continue connecting (yes/no)? yes    <<--테스트 하는 거임

 

[orcl2:~]$ hostname

edydr1p0.us.oracle.com

                           1 짝꿍,  0

                                     ↓ 

[oracle@edydr1p2 ~]$ ssh edydr1p0.us.oracle.com

...

Are you sure you want to continue connecting (yes/no)? yes

 

[oracle@edydr1p2 ~]$ ssh localhost

...

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'localhost' (RSA) to the list of known hosts.

Address 127.0.0.1 maps to edydr1p2.us.oracle.com, but this does not map back to the address - POSSIBLE BREAK-IN

ATTEMPT!

Last login: Tue Aug 5 23:57:15 2014 from edydr1p2.us.oracle.com

 

아래의 3개의 접속 명령어를 수행했을 패스워드를 물어보면 안되고

   바로 접속되는지 확인하시오!

1. $ssh edydr1p0.us.oracle.com

2. $ssh edydr1p0

3. $ssh localhost

 

 

 

3. 하둡 설치 파일을 다운받아 압축을 푼다

하둡 디렉토리 생성

 

[oracle@edydr1p2 ~]$ mkdir -p /u01/app/hadoop

[oracle@edydr1p2 ~]$ cd /u01/app/hadoop/

 

 

하둡 홈디렉토리에 하둡 설치파일 압축을 푼다.

**wget 다운로드 받는

(우리는 다운안받음. 선생님이 주심)

 

[oracle@edydr1p2 hadoop]$ wget http://mirror.apache-kr.org/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz

[oracle@edydr1p2 hadoop]$ tar xvzf hadoop-1.2.1.tar.gz

...

[oracle@edydr1p2 hadoop]$ rm hadoop-1.2.1.tar.gz   --->압축풀었으니 압축파일 날림

 

 

환경설정 파일에 하둡 홈디렉토리가 어디다 라고 지정

 

[oracle@edydr1p2 hadoop]$ cd

[oracle@edydr1p2 ~]$ vi .bash_profile

 

아래 2줄을 아래 추가한다.

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

export HADOOP_HOME=/u01/app/hadoop/hadoop-1.2.1

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

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

[oracle@edydr1p2 ~]$ . .bash_profile

 

하둡 환경설정을 하기위해 아래의 4 파일을 셋팅해야 한다.

1. hadoop-env.sh

자바 홈디렉토리와 hadoop 홈디렉토리가 어디인지 지정한다

 

2. core-site.xml

하둡의 네임노드가 어느서버인지 지정한다.

**네임노드는 데이터의 위치정보를 가지고 있는 노드(meta data)

 

3. mapred-site.xml

java 만들어진 mapreduce 프레임워크와 관련된 정보를 지정하는 파일

 

4. hdfs-site.xml

하둡 파일 시스템인 HDFS(hadoop distributed file system) 관련된 정보를

 저장하는 파일

 

 

[oracle@edydr1p2 ~]$ cd $HADOOP_HOME/conf

[oracle@edydr1p2 conf]$ vi hadoop-env.sh

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

# The java implementation to use. Required.

# export JAVA_HOME=/usr/lib/j2sdk1.5-sun

export JAVA_HOME=/u01/app/java/jdk1.7.0_60

export HADOOP_HOME=/u01/app/hadoop/hadoop-1.2.1

export HADOOP_HOME_WARN_SUPPRESS=1

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

 

[oracle@edydr1p2 conf]$ vi core-site.xml

core-site.xml

하둡의 네임노드가 어느서버인지 지정한다.

**네임노드는 데이터의 위치정보를 가지고 있는 노드(meta data)

 

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

<configuration>

  <property>

    <name>fs.default.name</name>

    <value>hdfs://localhost:9000</value>    

                                 ↑          

                ip 주소       포트

  </property>

  <property>

    <name>hadoop.tmp.dir</name>

    <value>/u01/app/hadoop/hadoop-1.2.1/hadoop-${user.name}</value>

  </property>

</configuration>

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

 

[oracle@edydr1p2 conf]$ vi mapred-site.xml

mapred-site.xml

java 만들어진 mapreduce 프레임워크와 관련된 정보를 지정하는 파일

**여러개의 클래스를 합쳐놓은게 frame work  ex) beautiful soup

***면점때 프레임워크 뭐써봤냐고 물어보면 텐써플로우 써봤다고 말하면 !

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

<configuration>

  <property>

    <name>mapred.job.tracker</name>

    <value>localhost:9001</value>

  </property>

  <property>

    <name>mapred.local.dir</name>

    <value>${hadoop.tmp.dir}/mapred/local</value>

  </property>

  <property>

    <name>mapred.system.dir</name>

    <value>${hadoop.tmp.dir}/mapred/system</value>

  </property>

</configuration>

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

 

[oracle@edydr1p2 conf]$ mkdir /u01/app/hadoop/hadoop-1.2.1/dfs

[oracle@edydr1p2 conf]$ mkdir /u01/app/hadoop/hadoop-1.2.1/dfs/name

[oracle@edydr1p2 conf]$ mkdir /u01/app/hadoop/hadoop-1.2.1/dfs/data

 

[oracle@edydr1p2 conf]$ vi hdfs-site.xml

hdfs-site.xml

하둡 파일 시스템인 HDFS(hadoop distributed file system) 관련된 정보를

 저장하는 파일

 

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

<configuration>

  <property>

    <name>dfs.name.dir</name>

    <value>/u01/app/hadoop/hadoop-1.2.1/dfs/name</value>

  </property>

  <property>

    <name>dfs.name.edits.dir</name>

    <value>${dfs.name.dir}</value>

  </property>

  <property>

    <name>dfs.data.dir</name>

    <value>/u01/app/hadoop/hadoop-1.2.1/dfs/data</value>

  </property>

</configuration>

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

 

4. 하둡네임노드를 포멧한다.

(하둡 이상하면 네임노드 포멧하시오 !)

(방법: $stop-all.sh

 $hadoop namenode -format

 $start-all.sh )

 

[oracle@edydr1p2 conf]$ cd

[oracle@edydr1p2 ~]$ hadoop namenode -format

 

14/08/06 00:28:19 INFO namenode.NameNode: STARTUP_MSG:

/************************************************************

STARTUP_MSG: Starting NameNode

STARTUP_MSG: host = edydr1p2.us.oracle.com/192.168.100.102

STARTUP_MSG: args = [-format]

STARTUP_MSG: version = 1.2.1

STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013

STARTUP_MSG: java = 1.7.0_60

************************************************************/

Re-format filesystem in /u01/app/hadoop/hadoop-1.2.1/dfs/name ? (Y or N) Y (대문자)

...

14/08/06 00:28:28 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/u01/app/hadoop/hadoop-1.2.1/dfs/name/current/edits

14/08/06 00:28:28 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/u01/app/hadoop/hadoop-1.2.1/dfs/name/current/edits

14/08/06 00:28:28 INFO common.Storage: Storage directory /u01/app/hadoop/hadoop-1.2.1/dfs/name has been successfully formatted.

14/08/06 00:28:28 INFO namenode.NameNode: SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG: Shutting down NameNode at edydr1p2.us.oracle.com/192.168.100.102

************************************************************/

 

[oracle@edydr1p2 ~]$ start-all.sh

...

 

5. 하둡의 데몬들이 정상인지 확인한다.

 

[oracle@edydr1p2 ~]$ jps

 

9167 SecondaryNameNode  --->하둡 보조 네임노드로, 네임노드의 파일 시스템 이미지 파일을

주기적으로 갱신하는 역할을 수행하는 노드(네임노드의 백업노드)

(메타 데이터를 최신것으로 유지시키는 작업)

 

9030 DataNode ---> hdfs 데이터를 입력하면 입력 데이터는 32mb 블럭으로 나눠져서

여러대의 데이터 노드에 분산되어 저장되는데 데이터를 저장하는 노드

 

9402 TaskTracker---> 사용자가 설정한 맵리듀스 프로그램을 실행하는 역할을 하며

하둡 데이터 노드에서 실행되는 데몬

 

9250 JobTracker ---> 하둡 클러스터에 등록된 전체 잡의 스케쥴링을 관리하고 모니터링하는 데몬

 

9494 Jps  ------> 현재 jps 명령어를 수행한 프로세서 ()

 

8883 NameNode ---> HDFS   모든 메타 데이터(data 위치정보) 관리하고

클라이언트가 hdfs 저장된 파일에 접근할 있게 해준다.

 

 

 

Hive 설치

하이브란?  페이스북에서 만든 오픈 소스

자바를 몰라도 rdbms 익숙한 데이터 분석가들을 위해서

SQL 이용해서 멥리듀싱 프로그래밍을 지원하는 프로그램

 

SQL -----------------------------------> java

                       하이브

 

하둡에서 emp.csv 가지고 이름과 월급을 조회하려면

java 알아야한다.

 

*HiveQL이란?

-하이브에서 사용되는 데이터는 HDFS(하둡파일 시스템) 저장되므로

 SELECT 되는데 update, delete 명령어는 지원안함

 

-from 절의 서브쿼리 사용가능(in line view 가능)

 

-select 사용시 having 사용 불가능

-Stored procedure (PL/SQL) 지원안함(Hive 2.0 가능)

 

오라클의 PL/SQL 프로시져를 사용하려면 java 해야한다.

 

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

 

hive 설치

1. hive 설치파일의 압축을 푼다.

$tar xvzf hive-0.12.0.tar.gz

 

2. hive 접속한다.

$ cd /home/oracle/hive-0.12.0/bin

$ ./hive

hive>

 

***bin 파일에 hive 실행파일이 있어서, 그리로 이동하면 hive 실행된다.

 

 

hive> show tables;

OK

Time taken: 5.956 seconds

 

3. emp 테이블을 생성한다.

  • /home/oracle/ 밑에 emp2.csv 올린다.(아래순서참고)

#cd /media/sf_Share

# ls

#cd /home/oracle/

# cp emp2.csv /home/oracle/

#chown -R oracle:oinstall emp2.csv

 

  • hive 에서 emp 테이블을 생성한다.
  • emp.csv emp 테이블에 로드한다.

 

 

*hive 에서 emp 프레임을 만들어준다

create table emp         

(empno int, 

ename string,

job string,

mgr int,

hiredate string,

sal int,

comm int,

deptno int)

 ROW FORMAT DELIMITED

 FIELDS TERMINATED BY ','

 LINES TERMINATED BY '\n'

 STORED AS TEXTFILE ;

 

 

 - emp.csv 를 emp 테이블에 로드한다.

 

 하둡 파일 시스템에 emp2.csv 를 올리시오 ! 

 

$ . .bash_profile

 

$ hadoop  fs  -put  /home/oracle/emp2.csv  emp2.csv

 

$ hadoop  fs  -ls  emp2.csv

 

 emp2.csv 를 /home/oracle 에 올린다.




hive>  load  data  inpath  '/user/oracle/emp2.csv'

       overwrite  into  table   emp; 

 

hive> select  * from  emp;

 


728x90
반응형

'hadoop' 카테고리의 다른 글

6. PIG설치, 설명  (0) 2019.01.11
5. TAJO설치, 설명  (0) 2019.01.11
4. HIVE  (0) 2019.01.11
3. 하둡 분산 파일  (0) 2019.01.11
1. 하둡을 배워야 하는 이유  (0) 2019.01.11