大数据集群搭建(jdk、hadoop、hive、mysql、spark、flume、zookeeper)

集群环境

各个机器安装的组件列表

大数据各个组件版本192.168.248.10192.168.248.11192.168.248.12
jdk1.80
hadoop-2.6.1
mysql5.7
hive
Scala
spark
sqoop

各个
配置静态IP地址
命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.248.10
NETMASK=255.255.255.0
GATEWAY=192.168.248.2
DNS1=1.2.4.8
DNS2=210.2.4.8

然后重新启动网络
命令:systemctl restart network
ping www.baidu.com

接下来就可以使用xshell来操作Linux了

先安装一个vim命令吧
yum install vim -y

编辑hosts文件
命令: vim /etc/hosts

192.168.248.10 master
192.168.248.11 slave1
192.168.248.12 slave2

配置网络名
命令:vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=master

hostname master

改一下名字
vim /etc/hostname

master

关闭掉网络管理
systemctl stop NetworkManager
systemctl disable NetworkManager

关闭Linux的内核防火墙
vim /etc/selinux/config

 SELINUX=enforcing 改为 SELINUX=disabled

把内核防火墙置空
setenforce 0

关闭防火墙
systemctl stop firewalld

禁止开机启动
systemctl disable firewalld

查看防火墙的状态
firewall-cmd --state

我把要安装的软件都放在/usr/local/src这个路径下了

以安装Hadoop为例
第一步:
上传Hadoop的安装包到/usr/local/src/下
第二步:
解压
第三步:
编辑几个配置文件如下:在这个路径下/usr/local/src/hadoop-2.6.1/etc/hadoop
1.core-site.xml

   <?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://master:9000</value>
	</property>
	<property>
          	<name>hadoop.tmp.dir</name>
		<value>file:/usr/local/src/hadoop-2.6.1/tmp</value>
	</property>
        <property>
                <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.groups</name>
                <value>*</value>
        </property>
	<property>
		<name>hbase.thrift.support.proxyuser</name>
		<value>true</value>
	</property>
	<property>
		<name>hbase.regionserver.thrift.http</name>
		<value>true</value>
	</property>
</configuration>
  

2.hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
             <name>dfs.namenode.secondary.http-address</name>
             <value>master:9001</value>
        </property>
        <property>
             <name>dfs.namenode.name.dir</name>
             <value>file:/usr/local/src/hadoop-2.6.1/dfs/name</value>
        </property>
        <property>
             <name>dfs.datanode.data.dir</name>
             <value>file:/usr/local/src/hadoop-2.6.1/dfs/data</value>
        </property>
        <property>
             <name>dfs.replication</name>
             <value>2</value>
        </property>
</configuration>

3.mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
		<description>指定运行mapreduce的环境是yarn,与hadoop1截然不同的地方</description>
	</property>
	<!--hadoop历史服务器-->
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>master:10020</value>
		<description>MR JobHistory Server管理的日志的存放位置</description>
	</property>
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>master:19888</value>
		<description>查看历史服务器已经运行完的Mapreduce作业记录的web地址,需要启动该服务才行</description>
	</property>
	<property>
		<name>mapreduce.jobhistory.done-dir</name>
		<value>/mr-history/done</value>
		<description>MR JobHistory Server管理的日志的存放位置,默认:/mr-history/done</description>
	</property>
	<property>
		<name>mapreduce.jobhistory.intermediate-done-dir</name>
		<value>/mr-history/tmp</value>
		<description>MapReduce作业产生的日志存放位置,默认值:/mr-history/tmp</description>
	</property>
	<property>
		<name>yarn.app.mapreduce.am.staging-dir</name>
		<value>/mr-history/hadoop-yarn/</value>
		<description>指定applicationID以及需要的jar包文件等</description>
	</property>
	<property>
		<name>mapreduce.map.memory.mb</name>
		<value>3072</value>
		<description>每个Map任务的物理内存限制</description>
	</property>
	<property>
		<name>mapreduce.reduce.memory.mb</name>
		<value>3072</value>
		<description>每个Reduce任务的物理内存限制</description>
	</property>
</configuration>

4.yarn-site.xml

<?xml version="1.0"?>
<configuration><!--打开HDFS上日志记录功能-->
        <property>  
             <name>yarn.log-aggregation-enable</name>  
             <value>true</value>  
        </property> 
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
             <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
             <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
            <name>yarn.resourcemanager.address</name>
            <value>master:8032</value>
        </property>
        <property>
            <name>yarn.resourcemanager.scheduler.address</name>
            <value>master:8030</value>
        </property>
        <property>
            <name>yarn.resourcemanager.resource-tracker.address</name>
            <value>master:8035</value>
        </property>
        <property>
            <name>yarn.resourcemanager.admin.address</name>
            <value>master:8033</value>
        </property>
        <property>
            <name>yarn.resourcemanager.webapp.address</name>
            <value>master:8088</value>
        </property>
        <property>         
             <name>yarn.nodemanager.pmem-check-enabled</name>
             <value>false</value>
        </property>
        <property>
            <name>yarn.nodemanager.vmem-check-enabled</name>
            <value>false</value>
        </property>
	<property>
    	    <name>yarn.log-aggregation.retain-seconds</name>
            <value>86400</value>
	</property>
	<property>
	    <name>yarn.log.server.url</name>
	    <value>http://master:19888/jobhistory/logs</value>
	</property>
</configuration>

5.slaves

slave1
slave2

编辑全局的配置文件
vim ~/.bashrc

export JAVA_HOME=/usr/local/src/jdk1.8.0_221
export CLASSPATH=.:$JAVA_HOME/lib
export HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

让配置文件立即生效
source ~/.bashrc

为了验证上面的命令是否正确,可以随便在任意路径下输入几条命令测试一下,全局的配置文件是否生效了

然后关机,删除这几个不用的
在这里插入图片描述
然后找到master的安装路径,复制它的文件夹
在这里插入图片描述然后在VMware中打开这个虚拟机
在这里插入图片描述复制的虚拟机的主机名会有冲突的,我们先修改主机名,如下图所示

在这里插入图片描述打开虚拟机,选择复制选项
在这里插入图片描述
打开后,需要修改以下几个配置,slave1就这样配置好了

vim /etc/sysconfig/network-scripts/ifcfg-ens33   修改IP地址
vim /etc/hostname
hostname slave1
vim /etc/sysconfig/network

systemctl restart network
ping www.baidu.com

配置免密登录,然后就可以启动并且操作集群了

在三台机器上都执行命令,
ssh-keygen -t rsa   执行完后连敲三个回车就可以了

执行完成后,会在这个目录下/root/.ssh,生成两个文件
-rw------- 1 root root 1675 321 01:20 id_rsa
-rw-r--r-- 1 root root  393 321 01:20 id_rsa.pub

三台机器都执行一下下面的命令
cat /root/.ssh/id_rsa.pub >/root/.ssh/authorized_keys

在master上执行
ssh slave1 cat /root/.ssh/authorized_keys >> /root/.ssh/authorized_keys
ssh slave2 cat /root/.ssh/authorized_keys >> /root/.ssh/authorized_keys

在slave1和slave2上执行
ssh master cat /root/.ssh/authorized_keys >> /root/.ssh/authorized_keys

配置完免密登录后,我们可以初始化集群了
hadoop namenode -format

大功告成,可以启动集群了,前面已经配置好了全局的环境变量,这里在任意路径下执行启动命令就可以了
start-all.sh

用jps命令在三台机器上查看进程,master4个,slave1和slave2有3个

[root@master ~]# jps
2848 Jps
2440 SecondaryNameNode
2265 NameNode
2589 ResourceManager
[root@slave1 ~]# jps
1928 Jps
1820 NodeManager
1727 DataNode

启动成功后,可以在Windows页面查看可视化页面了,但是需要输入IP地址有一些麻烦,我们去hosts文件中增加下面的配置即可,以后用后面的域名就可以访问集群了
在这个路径下修改hosts文件
C:\Windows\System32\drivers\etc
把这个hosts文件可以备份一份,在桌面修改
在这里插入图片描述然后在浏览器上测试

在这里插入图片描述访问HDFS
在这里插入图片描述几台机器其实是通过cluserid来进行关联的,可以看下面的目录的VERSION文件

master下
/usr/local/src/hadoop-2.6.1/dfs/name/current
slave下
/usr/local/src/hadoop-2.6.1/dfs/data/current

如果集群出错了,可以先暂停集群,然后删除下面的目录(三台机器都要这么操作),然后再重新格式化hadoop namenode -format
在这里插入图片描述
安装MySQL
centos7中自带有MySQL,需要先卸载自带的MySQL

查看命令:
rpm -qa | grep mariadb
卸载命令:
rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64

每个人的centos环境可能不一样,我的安装步骤是这样的,注意安装是有先后顺序的

1.rpm -Uvh mysql-community-common-5.7.28-1.el7.x86_64.rpm
2.rpm -Uvh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
3.rpm -Uvh mysql-community-client-5.7.28-1.el7.x86_64.rpm
4.rpm -Uvh mysql-community-server-5.7.28-1.el7.x86_64.rpm

安装hive
先配置两个配置文件

把MySQL的驱动jar包放在这个路径下
mv mysql-connector-java-5.1.25-bin.jar /usr/local/src/apache-hive-1.2.2-bin/lib

把hive中的这个jar包放到Hadoop的这个目录下
/usr/local/src/hadoop-2.6.1/share/hadoop/yarn/lib

hive的jar包路径
/usr/local/src/apache-hive-1.2.2-bin/lib

hive的jar包路径
在这里插入图片描述Hadoop的路径
在这里插入图片描述配置全局的配置文件

export JAVA_HOME=/usr/local/src/jdk1.8.0_221
export CLASSPATH=.:$JAVA_HOME/lib
export HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export HIVE_HOME=/usr/local/src/apache-hive-1.2.2-bin
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin

让配置文件立即生效
source ~/.bashrc

安装scala
第一步:上传Scala的安装包到/usr/local/src/下

第二步:解压Scala的安装包在这个目录下
在这里插入图片描述
第三步:配置Scala的路径为全局的环境变量
vim ~/.bashrc

export JAVA_HOME=/usr/local/src/jdk1.8.0_221
export CLASSPATH=.:$JAVA_HOME/lib
export HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export HIVE_HOME=/usr/local/src/apache-hive-1.2.2-bin
export SCALA_HOME=/usr/local/src/scala-2.11.8
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$SCALA_HOME/bin

第四步:让配置文件立即生效,Scala安装完成喽
source ~/.bashrc

第五步:测试是否安装成功,在任意路径下输入Scala,随意打印一下测试一下hello world
在这里插入图片描述

安装spark
第一步:上传spark的安装包到/usr/local/src/下

第二步:解压spark的安装包在这个目录下
在这里插入图片描述
第三步:配置spark的路径为全局的环境变量
vim ~/.bashrc

export JAVA_HOME=/usr/local/src/jdk1.8.0_221
export CLASSPATH=.:$JAVA_HOME/lib
export HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export HIVE_HOME=/usr/local/src/apache-hive-1.2.2-bin
export SCALA_HOME=/usr/local/src/scala-2.11.8
export SPARK_HOME=/usr/local/src/spark-2.0.2-bin-hadoop2.6
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin

第四步:修改两个配置文件在
/usr/local/src/spark-2.0.2-bin-hadoop2.6/conf目录下

先修改这两个文件的文件名字
mv spark-env.sh.template spark-env.sh
mv slaves.template slaves

在slaves中添加
slave1
slave2

在spark-env.sh中添加如下
export SCALA_HOME=/usr/local/src/scala-2.11.8
export JAVA_HOME=/usr/local/src/jdk1.8.0_221
export HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export HADOOP_CONF_DIR=/usr/local/src/hadoop-2.6.1/etc/hadoop
#export HIVE_CONF_DIR=/usr/local/src/hive-1.2.2/conf
#export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://master:9000/spark_historyLog"
export SPARK_CLASSPATH=/usr/local/src/spark-2.0.2-bin-hadoop2.6/jars
export SPARK_MASTER_IP=master
export SPARK_LOCAL_DIRS=/usr/local/src/spark-2.0.2-bin-hadoop2.6
export SPARK_DRIVER_MEMORY=1G

第五步:删除bin目录下的cmd,cmd是Windows下用的命令

第六步:把整个spark的安装目录拷贝到其它两台机器上
下面的是拷贝两个配置文件的命令,可以参考,怎么玩都成
scp slaves spark-env.sh root@slave2:/usr/local/src/spark-2.0.2-bin-hadoop2.6/conf

第七步:测试spark集群启动
在/usr/local/src/spark-2.0.2-bin-hadoop2.6/sbin下执行./start-all.sh,然后用jps查看进程即可

注意:实际开发的时候,会用到spark访问hive,有两步需要注意一下
1.在hive的目录/usr/local/src/apache-hive-1.2.2-bin/conf下复制hive-site.xml到/usr/local/src/spark-2.0.2-bin-hadoop2.6/conf下

2.在hive的目录/usr/local/src/apache-hive-1.2.2-bin/lib下复制MySQL的驱动jar包到/usr/local/src/spark-2.0.2-bin-hadoop2.6/jars下

安装flume
第一步:上传安装包到/usr/local/src下面
在这里插入图片描述

第二步:解压tar包到当前目录
命令:tar -zxvf apache-flume-1.6.0-bin.tar.gz

第三步:进入到解压目录的conf下,修改flume-env.sh.template名称为flume-env.sh
/usr/local/src/apache-flume-1.6.0-bin/conf

mv flume-env.sh.template flume-env.sh

第四步:修改flume-env.sh文件中的Java_home路径
查看Java_home路径的方法有好几种,我这里直接用echo $JAVA_HOME 来看了
在这里插入图片描述

把JAVA_HOME的路径配置到flume-env.sh中,如下;
在这里插入图片描述

第五步:把flume配置为全局变量,安装结束喽

在这里插入图片描述

安装sqoop
第一步:把sqoop的安装包放到集群上,解压
第二步:进入sqoop解压后的conf目录下,修改配置文件
在这里插入图片描述
第三步:修改配置文件,配置Hadoop和hive的目录
在这里插入图片描述
第四步:把MySQL的驱动jar包拷贝到bin目录下,这块和安装hive的时候类似
在这里插入图片描述
第五步:配置sqoop的命令为全局变量,并且执行立即生效的命令:source ~/.bashrc

export JAVA_HOME=/usr/local/src/jdk1.8.0_221
export CLASSPATH=.:$JAVA_HOME/lib
export HADOOP_HOME=/usr/local/src/hadoop-2.6.1
export HIVE_HOME=/usr/local/src/apache-hive-1.2.2-bin
export SCALA_HOME=/usr/local/src/scala-2.11.8
export SPARK_HOME=/usr/local/src/spark-2.0.2-bin-hadoop2.6
export FLUME_HOME=/usr/local/src/apache-flume-1.6.0-bin
export SQOOP_HOME=/usr/local/src/sqoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin:$FLUME_HOME/bin:$SQOOP_HOME/bin

第六步:测试sqoop命令在任意路径

细节记录:(放在搭建文档下面)
安装centos7的注意事项
在这里插入图片描述选择最小化安装,把开发工具勾选上
在这里插入图片描述

第一步:怎么找Hadoop的历史版本
在这里插入图片描述点击下载

在这里插入图片描述点击历史版本,选择2.6.1即可

在这里插入图片描述
安装MySQL的详细信息

[root@master mysql]# ll
总用量 252444
-rw-r--r-- 1 root root  45109364 320 23:49 mysql-community-client-5.7.28-1.el7.x86_64.rpm
-rw-r--r-- 1 root root    318768 320 23:49 mysql-community-common-5.7.28-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   4374364 320 23:49 mysql-community-libs-5.7.28-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 208694824 320 23:49 mysql-community-server-5.7.28-1.el7.x86_64.rpm
[root@master mysql]# rpm -qa | grep mariadb
mariadb-libs-5.5.65-1.el7.x86_64
[root@master mysql]# rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64
[root@master mysql]# rpm -qa | grep mariadb
[root@master mysql]# rpm -Uvh mysql-community-common-5.7.28-1.el7.x86_64.rpm
警告:mysql-community-common-5.7.28-1.el7.x86_64.rpm:V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:mysql-community-common-5.7.28-1.e################################# [100%]
[root@master mysql]# rpm -Uvh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
警告:mysql-community-libs-5.7.28-1.el7.x86_64.rpm:V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:mysql-community-libs-5.7.28-1.el7################################# [100%]
[root@master mysql]# rpm -Uvh mysql-community-client-5.7.28-1.el7.x86_64.rpm
警告:mysql-community-client-5.7.28-1.el7.x86_64.rpm:V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:mysql-community-client-5.7.28-1.e################################# [100%]
[root@master mysql]# rpm -Uvh mysql-community-server-5.7.28-1.el7.x86_64.rpm
警告:mysql-community-server-5.7.28-1.el7.x86_64.rpm:V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
错误:依赖检测失败:
	net-tools 被 mysql-community-server-5.7.28-1.el7.x86_64 需要
[root@master mysql]# yum install net-tools -y
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.bfsu.edu.cn
 * extras: mirrors.bfsu.edu.cn
 * updates: mirrors.bfsu.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 net-tools.x86_64.0.2.0-0.25.20131004git.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

===========================================================================================================
 Package                架构                版本                                   源                 大小
===========================================================================================================
正在安装:
 net-tools              x86_64              2.0-0.25.20131004git.el7               base              306 k

事务概要
===========================================================================================================
安装  1 软件包

总下载量:306 k
安装大小:917 k
Downloading packages:
net-tools-2.0-0.25.20131004git.el7.x86_64.rpm                                       | 306 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
** 发现 2 个已存在的 RPM 数据库问题, 'yum check' 输出如下:
2:postfix-2.10.1-9.el7.x86_64 有缺少的需求 libmysqlclient.so.18()(64bit)
2:postfix-2.10.1-9.el7.x86_64 有缺少的需求 libmysqlclient.so.18(libmysqlclient_18)(64bit)
  正在安装    : net-tools-2.0-0.25.20131004git.el7.x86_64                                              1/1 
  验证中      : net-tools-2.0-0.25.20131004git.el7.x86_64                                              1/1 

已安装:
  net-tools.x86_64 0:2.0-0.25.20131004git.el7                                                              

完毕!
[root@master mysql]# rpm -Uvh mysql-community-server-5.7.28-1.el7.x86_64.rpm
警告:mysql-community-server-5.7.28-1.el7.x86_64.rpm:V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:mysql-community-server-5.7.28-1.e################################# [100%]

sqoop操作记录2021-12-12



一、第一个场景:从MySQL中向HDFS导入数据,默认导出的HDFS路径是/user/root/
先建立一个表
DROP TABLE IF EXISTS `userdb`;
CREATE TABLE `userdb` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门id',
  `name` varchar(50) DEFAULT '' COMMENT '姓名',
  `age` varchar(10) DEFAULT '' COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=113 DEFAULT CHARSET=utf8 COMMENT='部门表';

-- ----------------------------
-- Records of userdb
-- ----------------------------
INSERT INTO `userdb` VALUES ('1', '吴占喜', '30');
INSERT INTO `userdb` VALUES ('2', '令狐冲', '31');
INSERT INTO `userdb` VALUES ('3', '任我行', '32');
INSERT INTO `userdb` VALUES ('4', '岳不群', '33');

导出命令
sqoop import \
--connect jdbc:mysql://master:3306/sqoop \
--username root \
--password 123456 \
--table userdb --m 1




hdfs dfs -cat /user/root/userdb/part-m-00000
1,吴占喜,30
2,令狐冲,31
3,任我行,32
4,岳不群,33




创建一张没有主键的表
CREATE TABLE `userdb1` (
  `id` bigint(20) NOT NULL COMMENT '部门id',
  `name` varchar(50) DEFAULT '' COMMENT '姓名',
  `age` varchar(10) DEFAULT '' COMMENT '年龄'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='部门表';
--数据
INSERT INTO `userdb1` VALUES ('1', '吴占喜', '30');
INSERT INTO `userdb1` VALUES ('2', '令狐冲', '31');
INSERT INTO `userdb1` VALUES ('3', '任我行', '32');
INSERT INTO `userdb1` VALUES ('4', '岳不群', '33');
--命令
sqoop import \
--connect jdbc:mysql://master:3306/sqoop \
--username root \
--password 123456 \
--table userdb1 --m 2



--报错信息
Warning: /usr/local/src/sqoop/../hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Warning: /usr/local/src/sqoop/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /usr/local/src/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
Warning: /usr/local/src/sqoop/../zookeeper does not exist! Accumulo imports will fail.
Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.
21/12/12 20:04:01 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
21/12/12 20:04:01 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
21/12/12 20:04:01 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
21/12/12 20:04:01 INFO tool.CodeGenTool: Beginning code generation
21/12/12 20:04:01 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `userdb1` AS t LIMIT 1
21/12/12 20:04:01 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `userdb1` AS t LIMIT 1
21/12/12 20:04:01 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /usr/local/src/hadoop-2.6.1: /tmp/sqoop-root/compile/1b8a143d01f4369d0906688fd1f07c33/userdb1.java使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
21/12/12 20:04:02 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-root/compile/1b8a143d01f4369d0906688fd1f07c33/userdb1.jar
21/12/12 20:04:02 WARN manager.MySQLManager: It looks like you are importing from mysql.
21/12/12 20:04:02 WARN manager.MySQLManager: This transfer can be faster! Use the --direct
21/12/12 20:04:02 WARN manager.MySQLManager: option to exercise a MySQL-specific fast path.
21/12/12 20:04:02 INFO manager.MySQLManager: Setting zero DATETIME behavior to convertToNull (mysql)
21/12/12 20:04:02 ERROR tool.ImportTool: Import failed: No primary key could be found for table userdb1. Please specify one with --split-by or perform a sequential import with '-m 1'.


--修改后的命令
 sqoop import \
--connect jdbc:mysql://master:3306/sqoop \
--username root \
--password 123456 \
--split-by id \
--table userdb1 --m 2


[root@master sqoop_shell]# hdfs dfs -cat /user/root/userdb1/part-m-00000
1,吴占喜,30
2,令狐冲,31
[root@master sqoop_shell]# hdfs dfs -cat /user/root/userdb1/part-m-00001
3,任我行,32
4,岳不群,33


指定一个HDFS输出目录
sqoop import \
--connect jdbc:mysql://master:3306/sqoop \
--username root \
--password 123456 \
--split-by id \
--target-dir queryresult \
--table userdb1 --m 2


hdfs dfs -ls queryresult
Found 3 items
-rw-r--r--   2 root supergroup          0 2021-12-12 22:54 queryresult/_SUCCESS
-rw-r--r--   2 root supergroup         30 2021-12-12 22:54 queryresult/part-m-00000
-rw-r--r--   2 root supergroup         30 2021-12-12 22:54 queryresult/part-m-00001
[root@master sqoop_shell]# hdfs dfs -cat queryresult/part-m-00000
1,吴占喜,30
2,令狐冲,31



根据where条件来进行迁移
sqoop import \
--connect jdbc:mysql://master:3306/sqoop \
--username root \
--password 123456 \
--where "id='1' " \
--target-dir queryresult_id \
--table userdb1 --m 1



[root@master sqoop_shell]# hdfs dfs -ls queryresult_id
Found 2 items
-rw-r--r--   2 root supergroup          0 2021-12-13 03:30 queryresult_id/_SUCCESS
-rw-r--r--   2 root supergroup         15 2021-12-13 03:30 queryresult_id/part-m-00000
[root@master sqoop_shell]# hdfs dfs -cat queryresult_id/part-m-00000
1,吴占喜,30


--where条件查询
sqoop import \
--connect jdbc:mysql://master:3306/sqoop \
--username root \
--password 123456 \
--query 'select id,name from userdb1 where id>2 and $CONDITIONS' \
--split-by id \
--fields-terminated-by ',' \
--target-dir queryresult_where \
--table userdb1 --m 1

--报错信息
Warning: /usr/local/src/sqoop/../hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Warning: /usr/local/src/sqoop/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /usr/local/src/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
Warning: /usr/local/src/sqoop/../zookeeper does not exist! Accumulo imports will fail.
Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.
21/12/13 03:39:42 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
21/12/13 03:39:42 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
Cannot specify --query and --table together.
Try --help for usage instructions.


sqoop import \
--connect jdbc:mysql://master:3306/sqoop \
--username root \
--password 123456 \
--query 'select id,name from userdb1 where id>2 and $CONDITIONS' \
--split-by id \
--fields-terminated-by ',' \
--target-dir queryresult_where \
#--table userdb1 --m 1


[root@master sqoop_shell]# hdfs dfs -cat queryresult_where/part-m-00000
3,任我行
[root@master sqoop_shell]# hdfs dfs -cat queryresult_where/part-m-00001
4,岳不群



增量导入
 sqoop import \
--connect jdbc:mysql://master:3306/sqoop \
--username root \
--password 123456 \
--table userdb1 \
--target-dir queryresult_add \
--incremental append \
--check-column id \
--last-value 3 \
--m 1



[root@master sqoop_shell]# hdfs dfs -cat queryresult_add/part-m-00000
4,岳不群,33


--没成功00000
sqoop import \
--connect jdbc:mysql://master:3306/sqoop \
--username root \
--password 123456 \
--table userdb3 \
--export-dir queryresult_add/part* \
--m 1 \

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值