■ 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;
'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 |