Note: this is the master branch - for a particular Sqoop version always check the related branch
본 페이지는 아파치 하둡을 설치하고 테이블 수집 까지 수행하는 과정을 가이드 하는 페이지입니다. 아파치 스쿱의 경우 최소한 하둡 클라이언트가 설치되어 있어야만 하는데 맥의 경우 brew 를 통해 설치하고, 리눅스 OS 의 경우 별도로 설치하는 것이 일반적입니다. 하지만 본 페이지에서는 컨테이너 상에서 하둡과 스쿱을 설치하고, 별도의 컨테이너에서 MySQL 을 올려두고 수집하는 예제를 수행합니다
- 기존 Dockerfile에서는 sqoop 1.4.7 사용하려 했으나 에러(not found) => 1.4.6으로 downgrade해서 진행하였습니다
Notion : https://www.notion.so/1-Sqoop-77a48a324387467c9558a61b83952bcc
💡 **필요한 것!**
- Docker Desktop
- git
- jdk(환경변수 설정까지)
# 사전에 구축해놓은 Dockerfile clone
git clone https://github.com/chestnut1717/docker-sqoop
cd docker-sqoop
docker build -t psyoblade/sqoop-hive:2.3.3 .
# image가 제대로 올라왔는지 확인
docker images
docker run -d --rm --name mysql -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" -v `pwd`/data/mysql:/var/lib/mysql -it mysql
# for windows cmd
docker run -d --rm --name mysql -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" -v %cd%/data/mysql:/var/lib/mysql -it mysql
# for windows powershell
docker run -d --rm --name mysql -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" -v ${pwd}/data/mysql:/var/lib/mysql -it mysql
docker exec -it mysql -uroot
mysql
docker exec -it mysql bash
mysql
create database psyoblade;
use psyoblade;
create table users (id int, account varchar(100));
insert into users values (1, 'BOAZ');
insert into users values (2, 'Engineering');
insert into users values (3, '19th');
insert into users values (4, 'Hello Hadoop');
insert into users values (5, 'Hello Sqoop');
insert into users values (6, 'Chestnut1717');
docker inspect mysql # 명령을 통해 network 섹션을 확인합니다
[생략]
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "262cd6269a27c837f570cb6a3cc9ed665527e459b43acd0442d6ddd9e60f08e0",
"EndpointID": "2f05d5a0aacbd522120ae1941a6453bd960d81f6e8bf3fd9735a15f3c66e1f81",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
}
}
}
}
]
# container간(sqoop - mysql) 네트워크 통신 가능하게 하기 위함
docker network create sqoop-mysql
docker network connect sqoop-mysql mysql
# sqoop image run 후 container 실행
docker run --name sqoop --network sqoop-mysql -v %cd%/jars:/jdbc -dit psyoblade/sqoop-hive:2.3.3
docker exec -u root -it sqoop bash
docker run --name sqoop --network sqoop-mysql -v `pwd`/jars:/jdbc -dit psyoblade/sqoop-hive:2.3.3
# for windows cmd
docker run --name sqoop --network sqoop-mysql -v %cd%/jars:/jdbc -dit psyoblade/sqoop-hive:2.3.3
# for windows powershell
docker run --name sqoop --network sqoop-mysql -v ${pwd}/jars:/jdbc -dit psyoblade/sqoop-hive:2.3.3
# root 이름으로 sqoop 실행
docker exec -u root -it sqoop -uroot
# for windows
docker exec -u root -it sqoop bash
sqoop import \
-jt local \
-fs local \
-m 1 \
--connect jdbc:mysql://mysql:3306/psyoblade \
--username root \
--table users \
--target-dir /tmp/sqoop/t2
vi /tmp/sqoop/t2/part-m-00000