一、Hadoop全分布部署
(1) 配置网络、防火墙、NTP
- 网络适配器选择VMnet8、虚拟网络编辑器VMnet8子网IP192.168.196.0
- 配置IP地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.196.101 (虚拟机IP地址)
NETMASK=255.255.255.0 (掩码)
GATEWAY=192.168.196.2 (网关)
DNS1=8.8.8.8
DNS2=129.29.29.29
MACADDR=00:0C:29:XX:XX:XX(虚拟机对应的MAC地址)0F:56:3D
- 重启网络
systemctl restart network
查看ip地址
ip address show
- ping测试能否联网
ping www.baidu.com
- 改主机名
yum install -y lrzsz
hostname
hostnamectl set-hostname master
查看修改后的主机名
hostname
- 绑定主机名
vi /etc/hosts
192.168.196.101 master
192.168.196.102 slave1
192.168.196.103 slave2
- 关闭防火墙
关闭防火墙
systemctl stop firewalld
确认关闭防火墙
systemctl status firewalld
永久关闭防火墙
systemctl disable firewalld
- 创建hadoop用户、重启
useradd hadoop
passwd hadoop
reboot
连接CRT
克隆两台master做slave
改ip地址、改主机名
重启
- 更改时区(中国)
master、slave1、slave2上都要
tzselect
选择5 Asia
选择9 China
选择1 Beijing Time
选择1 yes
- 设置时区
master、slave1、slave2上都要
vi /etc/profile
添加
TZ="Asia/Shanghai";export TZ
保存退出
source /etc/profile
- 设置NTP
查看是否存在NTP服务master、slave1、slave2
rpm -qa | grep ntp
如果没有就用yum安装
yum install -y ntp
屏蔽默认server,设master为本地时钟源,服务器层级设为10
master
vi /etc/ntp.conf
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
修改为
restrict 192.168.196.0 mask 255.255.255.0 nomodify notrap
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
修改为
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10
保存退出
硬件时间与系统时间同步 master
vi /etc/sysconfig/ntpd
添加
SYNC_HWCLOCK=yes
保存退出
- 主节点开启NTP
master
systemctl start ntpd.service或systemctl start ntpd
ntpd服务开机启动
systemctl enable ntpd.service
查看NTP状态
systemctl status ntpd
- 从节点在早十晚五时间段每隔半小时同步一次主节点的时间(24小时制)
slave1、slave2
crontab -e
添加
*/30 10-17 * * * /usr/sbin/ntpdate master
保存退出
(2)SSH无密登录
生成公钥master、slave1、slave2
su hadoop
ssh-keygen -t rsa
回车三次
copy ssh密钥 master
master
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
slave1
ssh-copy-id master
ssh-copy-id slave1
slave2
ssh-copy-id master
ssh-copy-id slave2
验证
ssh master <-> ssh slave1
ssh master <-> ssh slave2
(3)安装JDK
- 创建存放安装包的目录/opt/software 解压的目录/opt/module
su root
修改权限
chown -R hadoop:hadoop /opt
cd /opt
mkdir software
mkdir module
- 解压JDK安装包
tar -zxvf /opt/software/jdk1.8.0_221.tar.gz -C /opt/module/
- 改名
cd /opt/module
mv jdk1.8.0_221/ java
- 配置环境变量
vi /etc/profile
export JAVA_HOME=/opt/module/java
export PATH=$PATH:$JAVA_HOME/bin
刷新环境变量
source /etc/profile
- 查看环境变量
echo $JAVA_HOME
查看java版本
java -version
- 分发JDK和环境变量
scp -r /etc/profile root@slave1:/etc/profile
scp -r /etc/profile root@slave2:/etc/profile
修改权限
chown -R hadoop:hadoop /opt
slave1、slave2创建module目录
su root
修改权限
chown -R hadoop:hadoop /opt
su hadoop
cd /opt
mkdir module
master分发
su hadoop
scp -r /opt/module/java hadoop@slave1:/opt/module
scp -r /opt/module/java hadoop@slave2:/opt/module
slave1、slave2刷新环境变量
source /etc/profile
(4)安装hadoop
- 解压hadoop压缩包
tar -zxvf /opt/software/hadoop-2.7.7.tar.gz -C /opt/module/
- 改名
cd /opt/module
mv hadoop-2.7.7 hadoop
- 添加环境变量
su root
vi /etc/profile
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
刷新环境变量
source /etc/profile
- 检查hadoop是否生效
echo $HADOOP_HOME
hadoop
查看hadoop版本
hadoop version
修改权限
chown -R hadoop:hadoop /opt
- 测试MapReduce运行
su hadoop
创建输入数据存放的目录
mkdir ~/input
cd ~/input
vi data.txt
插入
hello hadoop
hello world
hello linux
保存退出
回到上级目录
cd ..
测试MapReduce运行(运行结果保存在~/output)
hadoop jar /opt/module/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount ~/input/data.txt ~/output
cd ~/output
cat part-r-00000
su root
修改权限
chown -R hadoop:hadoop /opt
(5)配置hadoop配置文件
- 配置hadoop-env.sh文件
cd /opt/module/hadoop/etc/hadoop/
vi hadoop-env.sh
找到# The java implementation to use.
export JAVA_HOME=${JAVA_HOME}
把${JAVA_HOME}改成/opt/module/java
- 配置 hdfs-site.xml 文件参数
配置HDPS参数
vi hdfs-site.xml
在文件中<configuration>和</configuration>一对标签之间追加以下配置信息
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/module/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/module/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
注:/opt/module/hadoop/dfs/name、
/opt/module/hadoop/dfs/data 两个目录是HDFS 数据存放位置
- 配置 core-site.xml 文件参数
配置集群全局参数
vi core-site.xml
在文件中<configuration>和</configuration>一对标签之间追加以下配置信息
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.196.101:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/module/hadoop/tmp</value>
</property>
注:IP地址是master的
- 配置 mapred-site.xml
配置Mapreduce参数
复制模板
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
在文件中<configuration>和</configuration>一对标签之间追加以下配置信息
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
- 配置 yarn-site.xml
配置集群资源管理系统参数
vi yarn-site.xml
在文件中<configuration>和</configuration>一对标签之间追加以下配置信息
<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:8031</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.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>
- hadoop其他相关配置
vi masters
插入master的ip : 192.168.196.101
vi slaves
把localhost删掉,插入 slave1、slave2的IP:
192.168.196.102
192.168.196.103
修改权限
chown -R hadoop:hadoop /opt
su hadoop
cd /opt/module/hadoop/
mkdir tmp
mkdir dfs/name -p
mkdir dfs/data -p
- 分发
scp -r /opt/module/hadoop hadoop@slave1:/opt/module
scp -r /opt/module/hadoop hadoop@slave2:/opt/module
su root
scp -r /etc/profile root@slave1:/etc/profile
scp -r /etc/profile root@slave2:/etc/profile
- 配置hadoop格式化
su hadoop
cd /opt/module/hadoop
namenode 格式化
hdfs namenode -format
master启动 NameNode
hadoop-daemon.sh start namenode
查看进程
jps
master: NameNode
slave1、slave2启动datanode
hadoop-daemon.sh start datanode
查看进程
jps
slave1: DataNode
slave2: DataNode
启动 SecondaryNameNode
hadoop-daemon.sh start secondarynamenode
查看进程
jps
master: NameNode
SecondaryNameNode
查看 HDFS 数据存放位置
ll /opt/module/hadoop/dfs/
- 查看HDFS的报告
hdfs dfsadmin -report
- 进入web界面查看节点状态
jps检查启动有无成功
查看NameNode和DataNode信息用浏览器打开
http://192.168.196.101:50070
查看SecondaryNameNode信息
http://192.168.196.101:50090
整体关闭hadoop
stop-dfs.sh
查看关闭hadoop是否成功
jps
整体启动hadoop
start-dfs.sh
启动yarn
start-yarn.sh
查看是否启动成功
jps
- 测试
在 HDFS 文件系统中创建/input目录
hdfs dfs -mkdir /input
查看HDFS文件目录
hdfs dfs -ls /
查看文本信息
cat ~/input/data.txt
复制到 HDFS 的/input 目录中
hdfs dfs -put ~/input/data.txt /input
查看复制是否成功
hdfs dfs -ls /input
计算数据文件中各单词的频度
hadoop jar /opt/module/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input/data.txt /output
hdfs dfs -ls /output
查看计算的结果
hdfs dfs -cat /output/part-r-00000
YARN 集群网页查看MapReduce 作业运行过程 http://192.168.196.101:8088
注:如果已经存在/output目录,就要先删除/output 目录,在重新运行wordcount案例计算
hdfs dfs -rm -r -f /output
整体关闭hadoop
stop-all.sh
查看进程是否全部关闭
jps
二、 MySQL、Hive组件安装配置
(1)解压安装hive
-
将hive、mysql的压缩包存放到/opt/software
-
解压、改名
tar -zxvf 安装包路径 -C /opt/module/
cd /opt/module/
改文件名
mv 安装包路径 hive
修改权限
su root
chown -R hadoop:hadoop /opt/
- 卸载MariaDB
关闭防火墙
systemctl stop firewalld
设置防火墙开机不启动
systemctl disable firewalld
查看防火墙状态
systemctl status firewalld
查看已安装的mariadb软件包
rpm -qa | grep mariadb
删除软件包
rpm -e --nodeps mariadb软件包名称
查看有无删除成功
rpm -qa | grep mariadb
(2)安装配置mysql
- 安装
cd /opt/software
安装common软件包
rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm
安装libs软件包
rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm
安装client软件包
rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rpm
安装server的依赖软件包
yum install -y net-tools
安装server的依赖软件包
yum install -y perl
安装server软件包
rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm
vi /etc/my.cnf
在symbolic-links=0下面插入
default-storage-engine=innodb # 存储引擎
innodb_file_per_table # 表数据单独保存
collation-server=utf8_general_ci # 支持中文编码字符集
init-connect='SET NAMES utf8' # 登录后自动执行第一行代码
character-set-server=utf8 # 服务器字符集
启动MySQL数据库
systemctl start mysqld
查询MySQL数据库的默认密码
cat /var/log/mysqld.log | grep password
mysql_secure_installation
输入默认密码,
然后修改密码Password123$
Change the password for root ? ((Press y|Y for Yes, any other key for No) :y
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :y
Remove anonymous users? (Press y|Y for Yes, any other key for No) :y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :n
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
- 验证、设置授权
mysql -uroot -pPassword123$
添加 root 用户本地访问授权
grant all privileges on *.* to root@'localhost' identified by 'Password123$';
添加 root 用户远程访问授权
grant all privileges on *.* to root@'%' identified by 'Password123$';
刷新授权
flush privileges;
查询 root 用户授权情况
select user,host from mysql.user where user='root';
退出MySQL数据库
exit;
- 安装配置hive
配置hive环境变量
vi /etc/profile
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
使环境变量配置生效
source /etc/profile
修改权限
chown -R hadoop:hadoop /opt/
su hadoop
cd /opt/module/hive/conf
将模板拷贝到hive-site.xml然后进行编辑
cp hive-default.xml.template hive-site.xml
- 修改hive组件配置文件
vi hive-site.xml
(1)设置 MySQL 数据库连接。
查 /javax.jdo.option.ConnectionURL
(按一次n可以找到)
将jdbc:derby:;databaseName=metastore_db;create=true改成
jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false
(2)配置 MySQL 数据库 root 的密码。
查 /javax.jdo.option.ConnectionPassword
(按一次n可以找到)
将mine改成Password123$
(3)验证元数据存储版本一致性。
若默认 false,则不用修改。
查 /hive.metastore.schema.verification
如果默认false就不用修改
(4)配置数据库驱动。
查 /javax.jdo.option.ConnectionDriverName
将org.apache.derby.jdbc.EmbeddedDriver改成
com.mysql.jdbc.Driver
(5)配置数据库用户名 javax.jdo.option.ConnectionUserName 为 root。
查 /javax.jdo.option.ConnectionUserName
将APP改成root
(6)查 /hive.querylog.location
将${system:java.io.tmpdir}/${system:user.name}改成
/opt/module/hive/tmp
(7)查 /hive.exec.local.scratchdir
将${system:java.io.tmpdir}/${system:user.name}改成
/opt/module/hive/tmp
(8)查 /hive.downloaded.resources.dir
将${system:java.io.tmpdir}/${hive.session.id}_resources改成
/opt/module/hive/tmp/resources
(9)查 /hive.server2.logging.operation.log.location
将${system:java.io.tmpdir}/${system:user.name}/operation_logs改成
/opt/module/hive/tmp/operation_logs
- 初始化
在Hive安装目录中创建临时文件夹tmp
mkdir /opt/module/hive/tmp
su root
cp /opt/software/mysql-connector-java-5.1.46.jar /opt/module/hive/lib/
修改权限
chown -R hadoop:hadoop /opt/
切换到hadoop用户
su hadoop
停止hadoop
stop-all.sh
启动hadoop
start-all.sh
初始化数据库
schematool -initSchema -dbType mysql
结果显示schemaTool completed既成功
进入mysql查看有hive数据库既成功
mysql -uroot -pPassword123$
show databases;
exit;
启动hive
hive
退出hive
exit;
三、Zookeeper组件安装配置
(1)解压安装zookeeper
-
传入zookeeper安装包
-
解压
tar -zxvf /opt/software/zookeeper-3.4.8.tar.gz -C /opt/module/
- 改名
su root
cd /opt/module/
mv zookeeper-3.4.8 zookeeper
(2)zookeeper的配置选项
- 配置
cd /opt/module/zookeeper
创建data和logs两个文件夹
mkdir data && mkdir logs
master节点编号写为 1
echo 1 > /opt/module/zookeeper/data/myid
cd /opt/module/zookeeper/conf/
拷贝zoo_sample.cfg到zoo.cfg
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
把dataDir=/tmp/zookeeper
改成/opt/module/zookeeper/data/
在最后加入
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
修改权限
chown -R hadoop:hadoop /opt
- 分发
scp -r /opt/module/zookeeper hadoop@slave1:/opt/module/
scp -r /opt/module/zookeeper hadoop@slave2:/opt/module/
- slave节点配置
slave1:
slave1节点编号写为 2
echo 2 > /opt/module/zookeeper/data/myid
chown -R hadoop:hadoop /opt
slave2:
slave2节点编号写为 3
echo 3 > /opt/module/zookeeper/data/myid
chown -R hadoop:hadoop /opt
- 环境变量
su root
vi /etc/profile
export ZOOKEEPER_HOME=/opt/module/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
分发
scp -r /etc/profile root@slave1:/etc/profile
scp -r /etc/profile root@slave2:/etc/profile
slave1、slave2刷新环境变量
source /etc/profile
- 启动
master、slave1、slave2依次启动
zkServer.sh start
查看运行状态
zkServer.sh status
两个follower 一个leader
四、HBase组件安装配置
(1)解压安装HBase
- 传入HBase包
- 解压HBase
tar -zxvf HBase路径 -C /opt/module/
cd /opt/module/
改名
mv HBase安装包 hbase
- 环境变量
vi /etc/profile
export HBASE_HOME=/opt/module/hbase
export PATH=$HBASE_HOME/bin:$PATH
刷新环境变量
source /etc/profile
(2)配置HBase
- 配置hbase-env.sh
cd /opt/module/hbase/conf/
vi hbase-env.sh
# export JAVA_HOME=/usr/java/jdk1.6.0/ 把#去掉
/usr/java/jdk1.6.0/ 改成/opt/module/java
查 /export HBASE_MANAGES_ZK
找到 # export HBASE_MANAGES_ZK=true
把 #去掉、把 true改成false
查/export HBASE_CLASSPATH
找到 # export HBASE_CLASSPATH=
把 #去掉、在 = 后面加/opt/module/hbase/
保存退出
- 配置hbase-site.xml
vi hbase-site.xml
在<configuration>和</configuration>中间插入
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value> # 使用 9000 端口
<description>The directory shared by region servers.</description>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value> # 使用 master 节点 60010 端口
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value> # 使用 master 节点 2181 端口
<description>Property from ZooKeeper's config zoo.cfg. The port at which the clients will connect.
</description>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>120000</value> # ZooKeeper 超时时间
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value> # ZooKeeper 管理节点
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/opt/module/hbase/tmp</value> # HBase 临时文件路径
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value> # 使用分布式 HBase
</property>
- 配置regionservers
vi regionservers
把localhost删掉然后插入以下内容
slave1
slave2
- 分发
创建临时文件的文件夹
mkdir /opt/module/hbase/tmp
cd /opt/module/hbase
chown -R hadoop:hadoop /opt/
su hadoop
scp -r /opt/module/hbase hadoop@slave1:/opt/module/
scp -r /opt/module/hbase hadoop@slave2:/opt/module/
- 启动
启动hadoop
start-all.sh
查看进程启动是否成功
jps
master、slave1、slave2依次启动zookeeper
zkServer.sh start
启动hbase
start-hbase.sh
查看进程启动是否成功
jps
- web界面打开
http://192.168.196.101:60010/
(3)HBase常用Shell命令
- 进入命令行
hbase shell
- 建立表 scores,两个列簇:grade 和 course
create 'scores','grade','course'
查看数据库状态
status
查看数据库版本
version
查看表
list
插入记录 1:jie,grade: 143cloud
put 'scores','jie','grade:','146cloud'
插入记录 2:jie,course:math,86
put 'scores','jie','course:math','86'
插入记录 3:jie,course:cloud,92
put 'scores','jie','course:cloud','92'
插入记录 4:shi,grade:133soft
put 'scores','shi','grade:','133soft'
插入记录 5:shi,grade:math,87
put 'scores','shi','course:math','87'
插入记录 6:shi,grade:cloud,96
put 'scores','shi','course:cloud','96'
读取 jie 的记录
get 'scores','jie'
读取 jie 的班级
get 'scores','jie','grade'
查看整个表记录
scan 'scores'
按例查看表记录
scan 'scores',{COLUMNS=>'course'}
删除指定记录
delete 'scores','shi','grade'
删除后,执行 scan 命令
scan 'scores'
增加新的列簇
alter 'scores',NAME=>'age'
查看表结构
describe 'scores'
删除列簇
alter 'scores',NAME=>'age',METHOD=>'delete'
删除表
disable 'scores'
退出hbase
quit
关闭hbase
stop-hbase.sh
master、slave1、slave2依次关闭zookeeper
zkServer.sh stop
关闭hadoop
stop-all.sh
五、Sqoop组件安装配置
(1)解压安装Sqoop
tar -zxvf /opt/software/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt/module/
改名
cd /opt/module
mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop
(2)配置启动Sqoop
cd /opt/module/sqoop/conf/
拷贝模板
cp sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh
对应的把#去掉、加上路径
export HADOOP_COMMON_HOME=/opt/module/hadoop/
export HADOOP_MAPRED_HOME=/opt/module/hadoop/
export HBASE_HOME=/opt/module/hbase
export HIVE_HOME=/opt/module/hive
保存退出
配置环境变量
vi /etc/profile
export SQOOP_HOME=/opt/module/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
export CLASSPATH=$CLASSPATH:$SQOOP_HOME/lib
保存退出
刷新环境变量
source /etc/profile
cp /opt/software/mysql-connector-java-5.1.46.jar /opt/module/sqoop/lib/
启动sqoop
改权限
chown -R hadoop:hadoop /opt/
su hadoop
启动hadoop
start-all.sh
查看进程
jps
连接 MySQL 数据库
sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username root -P
密码:Password123$
cp /opt/module/hive/lib/hive-common-2.0.0.jar /opt/module/sqoop/lib/
(3)sqoop模板命令、测试
mysql -uroot -pPassword123$
创建 sample 库
create database sample;
使用sample库
use sample;
创建 student 表,该数据表有 number 学号和 name 姓名两个字段
create table student(number char(9) primary key, name varchar(10));
插入数据
insert into student values('01','zhangsan');
insert into student values('02','lisi');
insert into student values('03','wangwu');
查询 student 表的数据
select * from student;
退出mysql
exit
启动 hive
hive
创建 sample 库
create database sample;
查询所有数据库
show databases;
使用 sample 库
use sample;
创建 student 表
create table student(number STRING, name STRING);
退出hive
exit;
从 MySQL 导出数据,导入 Hive
sqoop import --connect jdbc:mysql://master:3306/sample --username root --password Password123$ --table student --fields-terminated-by '|' --delete-target-dir --num-mappers 1 --hive-import --hive-database sample --hive-table student
mysql -uroot -pPassword123$
使用库
use sample;
删除表
delete from student;
退出mysql
exit;
从 Hive 导出数据,导入到 MySQL
sqoop export --connect "jdbc:mysql://master:3306/sample?useUnicode=true&characterEncoding=utf-8" --username root --password Password123$ --table student --input-fields-terminated-by '|' --export-dir /user/hive/warehouse/sample.db/student/*
Sqoop 组件应用
(1)列出 MySQL 数据库中的所有数据库
sqoop list-databases -connect jdbc:mysql://localhost:3306/ -username root -password Password123$
(2)连接 MySQL 并列出 sample 数据库中的表
sqoop list-tables -connect jdbc:mysql://localhost:3306/sample -username root -password Password123$
(3) 将关系型数据的表结构复制到hive中,只是复制表的结构,表中的内容没有复制过去
sqoop create-hive-table -connect jdbc:mysql://localhost:3306/sample -table s tudent -username root -password Password123$ -hive-table test
(4)从关系数据库导入文件到 Hive 中。
sqoop import --connect jdbc:mysql://master:3306/sample --username root --password Password123$ --table student --delete-target-dir --num-mappers 1 --hive-import --hive-database default --hive-table test
(5)删除MySQL数据student表中number为主键,添加信息导致主键重复,报错,所以删除表数据
mysql -u root -pPassword123$
use sample;
delete from student;
exit;
(6)将Hive中的表数据导入到MySQL中,在进行导入之前,MySQL中的表hive_test表必须已经提前创建好
sqoop export -connect jdbc:mysql://master:3306/sample -username root -password Password123$ -table student --input-fields-terminated-by '\001' -export-dir /user/hive/warehouse/test
(7)从数据库导出表的数据到 HDFS 上文件
sqoop import -connect jdbc:mysql://master:3306/sample -username root -password Password123$ -table student --num-mappers 1 -target-dir /user/test
(8)mysql -u root -pPassword123$
(9)use sample;
insert into student values('04','sss');
insert into student values('05','ss2');
insert into student values('06','ss3');
非数值型的值不能当做增量
alter table student modify column number int;
退出mysql
exit;
(10)从数据库增量导入表数据到 HDFS 中
sqoop import -connect jdbc:mysql://master:3306/sample -username root -password Password123$ -table student --num-mappers 1 -target-dir /user/test -check-column number -incremental append -last-value 0
(11)查看导入数据
hdfs dfs -cat /user/test/part-m-00000
hdfs dfs -cat /user/test/part-m-00001
六、Flume组件安装配置
(1)解压安装Flume
- 传入Flume安装包
- 解压、改名
tar -zxvf /opt/software/apache-flume-1.7.0-bin.tar.gz -C /opt/module/
cd /opt/module/
改名
mv apache-flume-1.7.0-bin flume
chown -R hadoop:hadoop /opt/
- 配置环境变量
vi /etc/profile
export FLUME_HOME=/opt/module/flume
export PATH=$PATH:$FLUME_HOME/bin
su hadoop
刷新环境变量
source /etc/profile
(2)配置Flume
- 配置
cd /opt/module/flume/conf/
拷贝模板并重命名为 flume-env.sh
cp flume-env.sh.template flume-env.sh
vi flume-env.sh
把export JAVA_HOME= 前面的 # 去掉,
修改JDK的安装目录把/usr/lib/jvm/java-6-sun改成 /opt/module/java
验证安装是否成功
flume-ng version
- 测试
Flume发送接收网口
cd /opt/module/flume/
在/opt/module/flume/创建test文件
mkdir test
cd test
创建一个apache的配置文件
vi simple-apache-flume.conf
添加以下配置
a1.sources=r1
a1.sinks=k1
a1.channels=c1
a1.sources.r1.type=netcat
a1.sources.r1.bind=localhost
a1.sources.r1.port=44444
a1.sinks.k1.type=logger
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1
保存退出
使用apache启动 Flume
flume-ng agent --conf conf --conf-file simple-apache-flume.conf --name a1 -Dflume.root.logger=INFO,console
再新连接一个master
安装telnet
yum install -y telnet
连接上并向Flume发送一个事件
telnet localhost 44444
发送 hello
第一台master接收hello
Flume发送接收hdfs
启动hadoop
start-all.sh
cd /opt/module/flume/test
查看hadoop有无启动成功
jps
vi simple-hdfs-flume.conf
添加
a1.sources=r1
a1.sinks=k1
a1.channels=c1
a1.sources.r1.type=spooldir
a1.sources.r1.spoolDir=/opt/module/hadoop/logs/
a1.sources.r1.fileHeader=true
a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path=hdfs://master:9000/tmp/flume
a1.sinks.k1.hdfs.rollsize=1048760
a1.sinks.k1.hdfs.rollCount=0
a1.sinks.k1.hdfs.rollInterval=900
a1.sinks.k1.hdfs.useLocalTimeStamp=true
a1.channels.c1.type=file
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1
保存退出
启动 flume (监听的是/opt/module/hadoop/logs日志文件)
flume-ng agent --conf-file simple-hdfs-flume.conf --name a1
再连一个master
su hadoop
hdfs dfs -ls /tmp
查 看 HDFS 文件系统 /tmp/f1ume 目录下文件
hdfs dfs -ls /tmp/flume
注:启动flume时如果报错可能是NameNode进入安全模式
可以用hadoop dfsadmin -safemode leave关闭安全模式然后再启动flume
七、Spark安装部署
(1)spark本地模式
-
传入spark压缩包到/opt/software
-
解压到/opt/module/
tar -zxvf /opt/software/spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/
- 改名
cd /opt/module/
mv spark-2.1.1-bin-hadoop2.7 spark
- 添加环境变量
vi /etc/profile
export SPARK_HOME=/opt/module/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
- 刷新环境变量
su hadoop
source /etc/profile
- 进入spark交互窗口
cd /opt/module/spark
bin/spark-shell
- 测试
cd data
vi word.txt
hello spark hello wcq hello cq
var i = 10
sc.textFile("data/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
- 进入监控页面
http://192.168.196.101:4040
(2)spark-Standalone独立部署模式
- 解压spark压缩包
tar -zxvf /opt/software/spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/
添加环境变量
vi /etc/profile
export SPARK_HOME=/opt/module/spark-standalone
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
su hadoop
source /etc/profile
- 改名
cd /opt/module/
mv spark-2.1.1-bin-hadoop2.7/ spark-standalone
- 配置slaves文件
cd spark-standalone/conf
mv slaves.template slaves
添加
slave1
slave2
- 配置mstart文件
mv spark-env.sh.template spark-env.sh
vi spark-env.sh
export JAVA_HOME=/opt/module/java
SPARK_MASTER_HOST=master # 主机名
SPARK_MASTER_PORT=7077 # 端口
SPARK_MASTER_IP=192.168.196.101 # spark集群的Master节点的ip地址
SPARK_WORKER_MEMORY=1g # 每个worker节点能够最大分配给exectors的内存大小
SPARK_WORKER_CORES=2 # 每个worker节点所占有的CPU核数目
SPARK_WORKER_INSTANCES=1 # 每台机器上开启的worker节点的数目
- 分发
scp -r /opt/module/spark-standalone hadoop@slave1:/opt/module
scp -r /opt/module/spark-standalone hadoop@slave2:/opt/module
- 添加环境变量
scp -r /etc/profile root@slave1:/etc/profile
scp -r /etc/profile root@slave2:/etc/profile
刷新
source /etc/profile
- 启动集群
cd /opt/module/spark-standalone
sbin/start-all.sh
- 进入web页面
http://192.168.196.101:8080/
- 进入spark交互窗口
spark-shell
进入http://192.168.196.101:4040/
八、Flink集群搭建
-
传入flink压缩包
-
解压flink、改名
tar -zxvf /opt/software/flink-1.10.2-bin-scala_2.11.tgz -C /opt/module/
cd /opt/module/
mv flink-1.10.2/ flink
- 启动
cd /opt/module/flink
./bin/start-cluster.sh
- 查看进程
jps
- 修改flink-conf.yaml文件
cd conf/
vi flink-conf.yaml
localhost改为master
jobmanager.rpc.address: master
- 修改slaves文件
vi slaves
删除localhost添加以下内容
slave1
slave2
- 添加环境变量
su root
vi /etc/profile
添加
export FLINK_HOME=/opt/module/flink
export PATH=$PATH:$FLINK_HOME/bin
保存退出
刷新环境变量
source /etc/profile
- 分发环境变量、Flink
scp -r /etc/profile root@slave1:/etc/profile
scp -r /etc/profile root@slave2:/etc/profile
su hadoop
scp -r /opt/module/flink/ hadoop@slave1:/opt/module/
scp -r /opt/module/flink/ hadoop@slave2:/opt/module/
刷新环境变量
source /etc/profile
- 重新启动flink
master:
cd /opt/module/flink
./bin/stop-cluster.sh
启动
./bin/start-cluster.sh
查看进程jps
master:StandaloneSessionClusterEntrypoint
slave1:TaskManagerRunner
slave2:TaskManagerRunner
- 进入web页面
http://192.168.196.101:8081/
九、Kafka安装部署
(1)安装、配置Kafka
tar -zxvf /opt/software/kafka1.0.0.tgz -C /opt/module/
cd /opt/module
改名
mv kafka_2.11-1.0.0/ kafka
cd /opt/module/kafka/config
vi server.properties
修改
broker.id=0 # 不能重复
log.dirs=/opt/module/kafka/logs
zookeeper.connect=192.168.196.101:2181,192.168.196.102:2181,192.168.196.103:2181
保存退出
cd /opt/module/kafka
mkdir logs
配置环境变量
vi /etc/profile
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
刷新环境变量
source /etc/profile
分发kafka
scp -r /opt/module/kafka/ hadoop@slave1:/opt/module/
scp -r /opt/module/kafka/ hadoop@slave2:/opt/module/
分发环境变量
scp -r /etc/profile root@slave1:/etc/profile
scp -r /etc/profile root@slave2:/etc/profile
slave1、slave2:
刷新环境变量
source /etc/profile
改slave1、slave2的server.properties
cd /opt/module/kafka/config
vi server.properties
修改
broker.id=1和broker.id=2
启动kafka前要启动hadoop和zkServer
master:
start-all.sh
master、slave1、slave2依次启动zookeeper
zkServer.sh start
master、slave1、slave2依次启动kafka
bin/kafka-server-start.sh -daemon config/server.properties
查看进程有无Kafka
jps
十、Redis的安装
1.安装gcc编译器同时安装redis所依赖的tcl包
yum install -y gcc
yum install -y tcl
2.上传解压redis压缩包
tar -zxvf redis-4.0.1.tar.gz -C /opt/module/
cd /opt/module
改名
mv redis-4.0.1/ redis
进入redis目录
cd redis
3.查看是否有安装make
查看make版本
make -version
如果没有需要安装
yum install -y make
4.执行make命令 做检查,需要在redis目录中执行
cd /opt/module/redis
make MALLOC=libc
5.执行安装
make PREFIX=/opt/module/redis install
显示下面内容就是就是安装成功了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2KNVMTzs-1649652115457)(C:\Users\11720\AppData\Roaming\Typora\typora-user-images\1640508237388.png)]
6.配置redis.conf
vi /opt/module/redis/redis.conf
注释
# bind 127.0.0.1
yes改成no
protected-mode no
daemonize yes
7.启动redis、测试
redis-server
redis-cli
8.后台启动服务连接windows
redis-server redis.conf
redis-cli
# 查看进程
ps -ef | grep redis
杀死进程
kill -9 id
9.后台启动后就可以从windows连接
用可视化工具连接192.168.196.101
r.id=0 # 不能重复
log.dirs=/opt/module/kafka/logs
zookeeper.connect=192.168.196.101:2181,192.168.196.102:2181,192.168.196.103:2181
保存退出
cd /opt/module/kafka
mkdir logs
配置环境变量
vi /etc/profile
export KAFKA_HOME=/opt/module/kafka
export PATH=
P
A
T
H
:
PATH:
PATH:KAFKA_HOME/bin
刷新环境变量
source /etc/profile
分发kafka
scp -r /opt/module/kafka/ hadoop@slave1:/opt/module/
scp -r /opt/module/kafka/ hadoop@slave2:/opt/module/
分发环境变量
scp -r /etc/profile root@slave1:/etc/profile
scp -r /etc/profile root@slave2:/etc/profile
slave1、slave2:
刷新环境变量
source /etc/profile
改slave1、slave2的server.properties
cd /opt/module/kafka/config
vi server.properties
修改
broker.id=1和broker.id=2
启动kafka前要启动hadoop和zkServer
master:
start-all.sh
master、slave1、slave2依次启动zookeeper
zkServer.sh start
master、slave1、slave2依次启动kafka
bin/kafka-server-start.sh -daemon config/server.properties
查看进程有无Kafka
jps
# 十、Redis的安装
1.安装gcc编译器同时安装redis所依赖的tcl包
yum install -y gcc
yum install -y tcl
2.上传解压redis压缩包
tar -zxvf redis-4.0.1.tar.gz -C /opt/module/
cd /opt/module
改名
mv redis-4.0.1/ redis
进入redis目录
cd redis
3.查看是否有安装make
查看make版本
make -version
如果没有需要安装
yum install -y make
4.执行make命令 做检查,需要在redis目录中执行
cd /opt/module/redis
make MALLOC=libc
5.执行安装
make PREFIX=/opt/module/redis install
显示下面内容就是就是安装成功了
[外链图片转存中...(img-2KNVMTzs-1649652115457)]
6.配置redis.conf
vi /opt/module/redis/redis.conf
注释
# bind 127.0.0.1
yes改成no
protected-mode no
daemonize yes
7.启动redis、测试
redis-server
redis-cli
8.后台启动服务连接windows
redis-server redis.conf
redis-cli
# 查看进程
ps -ef | grep redis
杀死进程
kill -9 id
9.后台启动后就可以从windows连接
用可视化工具连接192.168.196.101
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mxcqhgSp-1649652115458)(C:\Users\11720\AppData\Roaming\Typora\typora-user-images\1640757856739.png)]