Hiveserver2는 Hadoop의 주요 기능인 HDFS와 MapReducer에 외부로부터 쉬운 접근을 위한 인터페이스 같은 존재이다.
Hiveserver2를 이용하면 외부에서도 Hadoop에 접근이 가능하다.
외부에서 접근할 때 우리는 Beeline 툴을 사용할 것이다.
1. beeline -u jdbc:hive2://localhost:10000/userdb (뜻 : hive2를 Java Database Connectivity를 이용하여 localhost 10000번의 userdb에 접근한다, 이때 10000번은 우리가 사전에 지정했던 숫자, userdb는 만들었던 Database이다.)
*beeline이 있는 디렉토리에서 실행한다. (나의 경우 hive-3.1.2/bin/)
만약 에러가 발생한다면 그 에러또한 구글링하여 해결 가능하다.
나의 경우에는
위와 같은 에러가 발생하였고 tmp 디렉토리에 대한 외부 접근 권한이 없어서 발생한듯 하다. tmp 권한을 살펴보면
현재 외부에 대한 권한이 아무것도 주어지지 않았다.
외부접근 권한에 대한 수정을 하자.
hdfs dfs -chmod -R +x /tmp -> tmp 디렉토리 및 모든 하위 디렉토리에 대한 외부 권한에 x(실행) 권한을 추가한다
위와같이 외부 접근 권한을 추가하고 다시 beeline을 실행해보자 (1번 명령어)
에러가 발생하지 않고 실행된다면 연결 성공한 것이다.
2. 이제 연결이 잘 되었는지 userdb안에 내용들을 들여다보자
show databases; - 현재 서버에 만들어져있는 데이터베이스 조회
use userdb; - 우리는 userdb를 사용한다.
show tables; - userdb 데이터베이스 내에 테이블을 조회한다
select * from employee; - 전에 만든 employee 테이블을 조회하여 출력
위 명령어들은 MapReducer를 이용하지 않고 HDFS 영역에서 가지고 있는 데이터를 그냥 불러온것이다.
3. select avg(salary) from employee
employee테이블의 salary컬럼의 평균을 구하는 명령어
위 명령어는 기존의 데이터를 그냥 출력하는 것이 아니라 계산을 필요로 하기 때문에 실행하면
Hive가 Mapper와 Reducer를 자동으로 생성하게되고 결과값을 출력한다.
**나같은 경우에는 또다시 에러가 발생했다.
hdfs영역의 /tmp/hdoop-yarn/staging 디렉토리 및 모든 하위 디렉토리에 쓰기(w) 권한을 부여하자.
hdfs dfs -chmod -R +w /tmp/hadoop-yarn/staging
이렇게 쓰기 권한을 부여하고 다시 1번 명령어(beeline)을 실행하여
use userdb; (데이터베이스 선택) 및 select avg(salary) from employee를 시도한다.
성공하면 위와같이 출력된다.
'Hadoop' 카테고리의 다른 글
Spark 설치 (0) | 2021.09.14 |
---|---|
Spark(스파크) (0) | 2021.09.14 |
Hiveserver2(Feat. Ubuntu) (0) | 2021.09.09 |
HiveQL 명령어(feat. Hive shell) (0) | 2021.09.09 |
Hive 설치(Feat.Ubuntu) (0) | 2021.09.09 |
댓글