hadoop2.6.5+sqoop1.4.6 환경 배치 및 테스트(3)
mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz /usr/local/
tar -xvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
ln -s /usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha /usr/local/sqoop
2./usr/local/sqoop,/usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha속 주속 그룹을hadoop으로 변경하여hadoop 사용자가 사용할 수 있도록 보증합니다.
chown -R hadoop:hadoop /usr/local/sqoop-1.4.6.bin__hadoop-2.0.4-alpha
chown -R hadoop:hadoop /usr/local/sqoop
3. SQOOP 구성HOME 환경 변수/etc/profile에서 다음 레코드를 추가 및 수정합니다.
export SQOOP_HOME=/usr/local/sqoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SQOOP_HOME/bin:$PATH
4. squop을 설정하여 Hadoop에 통합할 수 있음: 1) $SQOOP 에 입장HOME/conf 디렉터리에서 sqoop 환경 설정 스크립트 sqoop-env-template를 복사합니다.sh를 현재 디렉터리로 이동하고 sqoop-env로 이름을 바꿉니다.sh:
cd $SQOOP_HOME/conf
cp sqoop-env-template.sh sqoop-env.sh
2) squop-env를 수정합니다.sh의 HADOOPCOMMON_Home과 HADOOPMAPRED_HOME 변수 값은 해당 hadoop 파일 경로에 해당합니다.
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop/share/hadoop/mapreduce
3) sqoop은 mysql와 mapreduce 프로그램을 연결하여 데이터 추출을 완성해야 하기 때문에 mysql-connector와 mapreduce의 상응하는 라이브러리 파일 지원이 필요합니다. mysql-connector-java 패키지와 $HADOOPHOME/share/hadoop/mapreduce/아래의 모든jar 패키지를 $SQOOP 로 복사HOME/lib 디렉토리:
cp $HADOOP_HOME/share/hadoop/mapreduce/*.jar $SQOOP_HOME/lib/
cp ~/mysql-connector-java-5.1.32-bin.jar $SQOOP_HOME/lib/
chown -R hadoop:hadoop $SQOOP_HOME/lib/
5. 다음은 squop 스크립트를 사용하여 데이터 추출 작업을 진행할 수 있습니다. 이 스크립트는 $SQOOPHOME/bin 디렉토리에서 다음 방법을 사용합니다.
#
sqoop list-databases --connect jdbc:mysql://localhost:3306/actionLog \
--username root --P ( , sqoop mysql )
# MySQL hdfs
sqoop import --connect jdbc:mysql://hadoop-test-nn:3306/actionLog \
--username root -P \
--table log \
--columns "logger_id,time" \
--where 'action = "login"' \
--target-dir /test/loginInfo
:
--username
-P
--table
--columns
--where sql where
--target-dir hdfs , hdfs ,
위의 sqoop import 명령은 mysql의 actionLog 라이브러리에 있는 log 테이블을 다음과 같이 추출하는 데이터 구조입니다.
mysql> desc log;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| log_id | bigint(20) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| action | varchar(255) | YES | | NULL | |
| logger_id | varchar(255) | YES | | NULL | |
| time | varchar(255) | YES | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
내보내기 열을 logger로 지정했기 때문에id、time.따라서 hdfs로 내보낸 데이터는 다음과 같습니다.
[hadoop@hadoop-test-nn lib]$ hdfs dfs -ls /test/loginInfo
Found 1 items
-rw-r--r-- 2 hadoop supergroup 211825 2017-08-02 16:04 /test/loginInfo/userLoginInfo.txt
[hadoop@hadoop-test-nn lib]$ hdfs dfs -cat /test/loginInfo/userLoginInfo.txt
wanger,2017-07-27 14:21:12
zhangsan,2017-07-27 14:37:16
james,2017-07-27 15:27:13
...
(주: 여기에서/test/login Info의 텍스트 내용을 통합하고 다시 저장했습니다. 실제 사용 과정에서 이 디렉터리에 part-** 형식으로 명명된 텍스트가 여러 개 생겨서 텍스트 내용의 형식이 일치합니다.) 현재 데이터는 성공적으로 추출되어 텍스트 방식으로hdfs에 저장되었습니다.다음은 mapreduce 프로그램을 작성해서 텍스트를 분석할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
mongodb의mapreduce 그룹 통계 수량 실현텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.