先添加sqoop2
然后选择sqoop2,然后就没有什么了完成后启动。
去/var/lib/下面添加mysql驱动
在执行
cd /opt/cloudera/parcels/CDH/lib/hadoop/client
sudo ln -s ../../hadoop-hdfs/lib/jackson-mapper-asl-1.8.8.jar
sudo ln -s ../../hadoop-hdfs/lib/jackson-core-asl-1.8.8.jar
`
``
之后就可以了
进到安装的机器上
执行sqoop2
进去shell、
sqoop:000> set server –host your.host.com –port 12000 –webapp sqoop
sqoop:000> show version –all
client version:
Sqoop 2.0.0-SNAPSHOT source revision 418c5f637c3f09b94ea7fc3b0a4610831373a25f
Compiled by vbasavaraj on Mon Nov 3 08:18:21 PST 2014
server version:
Sqoop 2.0.0-SNAPSHOT source revision 418c5f637c3f09b94ea7fc3b0a4610831373a25f
Compiled by vbasavaraj on Mon Nov 3 08:18:21 PST 2014
API versions:
[v1]
sqoop:000> help
For information about Sqoop, visit: http://sqoop.apache.org/
Available commands:
exit (\x ) Exit the shell
history (\H ) Display, manage and recall edit-line history
help (\h ) Display this help message
set (\st ) Configure various client options and settings
show (\sh ) Display various objects and configuration options
create (\cr ) Create new object in Sqoop repository
delete (\d ) Delete existing object in Sqoop repository
update (\up ) Update objects in Sqoop repository
clone (\cl ) Create new object based on existing one
start (\sta) Start job
stop (\stp) Stop job
status (\stu) Display status of a job
enable (\en ) Enable object in Sqoop repository
disable (\di ) Disable object in Sqoop repository
sqoop:000> show connector
+—-+————————+—————-+——————————————————+———————-+
| Id | Name | Version | Class | Supported Directions |
+—-+————————+—————-+——————————————————+———————-+
| 1 | hdfs-connector | 2.0.0-SNAPSHOT | org.apache.sqoop.connector.hdfs.HdfsConnector | FROM/TO |
| 2 | generic-jdbc-connector | 2.0.0-SNAPSHOT | org.apache.sqoop.connector.jdbc.GenericJdbcConnector | FROM/TO |
+—-+————————+—————-+——————————————————+———————-+
还有show link ,show job
创建link,job。的去官网这里不说了
再说下定时启动job
写一个java api
这个代码显示不一样。见谅吧
package com.lenovo.analyze.sqoopmtm;
import org.apache.sqoop.client.SqoopClient;
import org.apache.sqoop.model.MConnector;
import org.apache.sqoop.model.MDriverConfig;
import org.apache.sqoop.model.MFromConfig;
import org.apache.sqoop.model.MJob;
import org.apache.sqoop.model.MLink;
import org.apache.sqoop.model.MLinkConfig;
import org.apache.sqoop.model.MSubmission;
import org.apache.sqoop.model.MToConfig;
import org.apache.sqoop.submission.counter.Counter;
import org.apache.sqoop.submission.counter.CounterGroup;
import org.apache.sqoop.submission.counter.Counters;
import org.apache.sqoop.validation.Status;
public class MysqlToHDFS {
public static void main(String[] args) {
sqoopTransfer();
}
public static void sqoopTransfer() {
//初始化
String url =”http://ip:12000/sqoop/”;
SqoopClient client = new SqoopClient(url);
client.setServerUrl(url);
java.util.Random r=new java.util.Random();
int num=r.nextInt();
//创建一个源链接 JDBC
long fromConnectorId = 1;
MLink fromLink =client.createLink(fromConnectorId);
fromLink.setName("JDBC"+num);
// fromLink.setCreationUser(“liuwei”);
MLinkConfig fromLinkConfig =fromLink.getConnectorLinkConfig();
fromLinkConfig.getStringInput(“linkConfig.connectionString”).setValue(“jdbc:mysql://ip:3306/db_warehouse”);
fromLinkConfig.getStringInput(“linkConfig.jdbcDriver”).setValue(“com.mysql.jdbc.Driver”);
fromLinkConfig.getStringInput(“linkConfig.username”).setValue(“yonghu”);
fromLinkConfig.getStringInput(“linkConfig.password”).setValue(“888!@#”);
Status fromStatus =client.saveLink(fromLink);
System.out.println(fromStatus);
if(fromStatus.canProceed()) {
System.out.println(“创建JDBC Link成功,ID为:” + fromLink.getPersistenceId());
} else {
System.out.println(“创建JDBC Link失败”);
}
//创建一个目的地链接HDFS
long toConnectorId = 3;
MLink toLink =client.createLink(toConnectorId);
toLink.setName("HDFS"+num);
toLink.setCreationUser("sqoop2");
MLinkConfig toLinkConfig =toLink.getConnectorLinkConfig();
System.out.println(toLinkConfig);
toLinkConfig.getStringInput("linkConfig.uri").setValue("hdfs://ip:8020/");
Status toStatus =client.saveLink(toLink);
if(toStatus.canProceed()) {
System.out.println("创建HDFS Link成功,ID为:" + toLink.getPersistenceId());
} else {
System.out.println("创建HDFS Link失败");
}
//创建一个任务
long fromLinkId =fromLink.getPersistenceId();
long toLinkId =toLink.getPersistenceId();
MJob job = client.createJob(fromLinkId,toLinkId);
job.setName("MySQL to HDFSjob"+num);
job.setCreationUser("hadoop");
//设置源链接任务配置信息
MFromConfig fromJobConfig = job.getFromJobConfig();
System.out.println("****"+fromJobConfig);
fromJobConfig.getStringInput("fromJobConfig.schemaName").setValue("db_warehouse");
fromJobConfig.getStringInput("fromJobConfig.tableName").setValue("T_TEST");
fromJobConfig.getStringInput("fromJobConfig.partitionColumn").setValue("id");
fromJobConfig.getStringInput("fromJobConfig.columns").setValue("id,age");
MToConfig toJobConfig =job.getToJobConfig();
System.out.println("===="+toJobConfig);
// toJobConfig.getEnumInput(“toJobConfig.outputFormat”).setValue(“TEXT_FILE”);
toJobConfig.getEnumInput(“toJobConfig.outputFormat”).setValue(“TEXT_FILE”);
toJobConfig.getEnumInput(“toJobConfig.compression”).setValue(“NONE”);
toJobConfig.getStringInput(“toJobConfig.outputDirectory”).setValue(“/user/sqoop2/”);
MDriverConfig driverConfig =job.getDriverConfig();
driverConfig.getIntegerInput(“throttlingConfig.numExtractors”).setValue(3);
Status status = client.saveJob(job);
System.out.println("===="+status);
if(status.canProceed()) {
System.out.println("JOB创建成功,ID为:"+ job.getPersistenceId());
} else {
System.out.println("JOB创建失败。");
}
//启动任务
long jobId = job.getPersistenceId();
System.out.println(jobId);
// long jobId = 4;
MSubmission submission =client.startJob(jobId);
System.out.println(“JOB提交状态为 : ” + submission.getStatus());
while(submission.getStatus().isRunning()&& submission.getProgress() != -1) {
System.out.println(“进度 : ” + String.format(“%.2f%%”, submission.getProgress() * 100));
//三秒报告一次进度
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("JOB执行结束... ...");
System.out.println("Hadoop任务ID为:" + submission.getExternalJobId());
Counters counters =submission.getCounters();
if(counters != null) {
System.out.println("计数器:");
for(CounterGroup group : counters) {
System.out.print("\t");
System.out.println(group.getName());
for(Counter counter : group) {
System.out.print("\t\t");
System.out.print(counter.getName());
System.out.print(": ");
System.out.println(counter.getValue());
}
}
}
if(submission.getError().getErrorSummary() != null) {
System.out.println("JOB执行异常,异常信息为 : " +submission.getError());
}
System.out.println("HDFS通过sqoop传输数据到MySQL统计执行完毕");
}
}
package com.lenovo.analyze.sqoopmtm;
import org.apache.sqoop.client.SqoopClient;
import org.apache.sqoop.model.MDriverConfig;
import org.apache.sqoop.model.MFromConfig;
import org.apache.sqoop.model.MJob;
import org.apache.sqoop.model.MLink;
import org.apache.sqoop.model.MLinkConfig;
import org.apache.sqoop.model.MSubmission;
import org.apache.sqoop.model.MToConfig;
import org.apache.sqoop.submission.counter.Counter;
import org.apache.sqoop.submission.counter.CounterGroup;
import org.apache.sqoop.submission.counter.Counters;
import org.apache.sqoop.validation.Status;
public class HDFSToMysql {
public static void main(String[] args) {
sqoopTransfer();
}
public static void sqoopTransfer() {
//初始化
String url =”http://ip:12000/sqoop/”;
SqoopClient client = new SqoopClient(url);
int num=205;
//创建一个源链接 HDFS
long fromConnectorId = 3;
MLink fromLink =client.createLink(fromConnectorId);
fromLink.setName("HDFSconnector"+num);
fromLink.setCreationUser("admln");
MLinkConfig fromLinkConfig =fromLink.getConnectorLinkConfig();
fromLinkConfig.getStringInput("linkConfig.uri").setValue("hdfs://ip-hadoop02:8020/");
Status fromStatus =client.saveLink(fromLink);
if(fromStatus.canProceed()) {
System.out.println("创建HDFS Link成功,ID为:" + fromLink.getPersistenceId());
} else {
System.out.println("创建HDFS Link失败");
}
//创建一个目的地链接 JDBC
long toConnectorId = 1;
MLink toLink = client.createLink(toConnectorId);
toLink.setName("JDBCconnector"+num);
toLink.setCreationUser("admln");
MLinkConfig toLinkConfig =toLink.getConnectorLinkConfig();
toLinkConfig.getStringInput("linkConfig.connectionString").setValue("jdbc:mysql://ip/db_warehouse");
toLinkConfig.getStringInput("linkConfig.jdbcDriver").setValue("com.mysql.jdbc.Driver");
toLinkConfig.getStringInput("linkConfig.username").setValue("yonghu");
toLinkConfig.getStringInput("linkConfig.password").setValue("9999!@#");
Status toStatus =client.saveLink(toLink);
if(toStatus.canProceed()) {
System.out.println("创建JDBC Link成功,ID为:" + toLink.getPersistenceId());
} else {
System.out.println("创建JDBC Link失败");
}
//创建一个任务
long fromLinkId =fromLink.getPersistenceId();
long toLinkId =toLink.getPersistenceId();
MJob job = client.createJob(fromLinkId,toLinkId);
job.setName("HDFS to MySQLjob"+num);
job.setCreationUser("sqoop2");
//设置源链接任务配置信息
MFromConfig fromJobConfig =job.getFromJobConfig();
fromJobConfig.getStringInput("fromJobConfig.inputDirectory").setValue("/user/sqoop2");
//创建目的地链接任务配置信息
MToConfig toJobConfig =job.getToJobConfig();
toJobConfig.getStringInput("toJobConfig.schemaName").setValue("db_warehouse");
toJobConfig.getStringInput("toJobConfig.tableName").setValue("T_TEST_copy");
//toJobConfig.getStringInput("fromJobConfig.partitionColumn").setValue("id");
// set the driver config values
// MDriverConfig driverConfig =job.getDriverConfig();
// driverConfig.getIntegerInput(“throttlingConfig.numExtractors”).setValue(3);//这句还没弄明白
Status status = client.saveJob(job);
if(status.canProceed()) {
System.out.println(“JOB创建成功,ID为:”+ job.getPersistenceId());
} else {
System.out.println(“JOB创建失败。”);
}
//启动任务
long jobId = job.getPersistenceId();
MSubmission submission =client.startJob(jobId);
System.out.println("JOB提交状态为 : " + submission.getStatus());
while(submission.getStatus().isRunning() &&submission.getProgress() != -1) {
System.out.println("进度 : " + String.format("%.2f%%", submission.getProgress() * 100));
//三秒报告一次进度
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("JOB执行结束... ...");
System.out.println("Hadoop任务ID为:" + submission.getExternalJobId());
Counters counters =submission.getCounters();
if(counters != null) {
System.out.println("计数器:");
for(CounterGroup group : counters) {
System.out.print("\t");
System.out.println(group.getName());
for(Counter counter : group) {
System.out.print("\t\t");
System.out.print(counter.getName());
System.out.print(": ");
System.out.println(counter.getValue());
}
}
}
if(submission.getError().getErrorSummary() != null) {
System.out.println("JOB执行异常,异常信息为 : " +submission.getError());
}
System.out.println("HDFS通过sqoop传输数据到MySQL统计执行完毕");
}
}
上边的不适合工作环境
工作环境写一个
String url =”http://ip:12000/sqoop/”;
SqoopClient client = new SqoopClient(url);
client.startJob(jobId)
“`
这个jobid 去shell
show job 定时执行就行了.