需求:在window下通过flume采集douban.txt文件,将其保存到Linux的Hadoop上
1、解压flume的安装包:apache-flume-1.6.0-bin
(1)将conf下的flume-env.ps1.template文件,复制一份改为flume-env.ps1
(2)修改conf下的log4j.properties文件
改后的结果:
2、解压hadoop安装包:hadoop-2.6.5
(1)从安装包中找到如下jar包
(2)将这些jar包放到,flume解压文件的lib文件夹下
3、在window下配置hadoop的执行文件:
(1)
①主要使用的是文件夹下bin里面的内容
②
(2)然后将文件配置到环境变量中:
①HADOOP_HOME:文件夹的目录
②
(3)配置:flume的执行文件,例如:flume_hdfs.conf
①可以将文件放到 flume的conf文件夹下
②配置内容如下:(内容可以修改)
1)
2)或者是:
3)注意:第一个配置是每秒都在hdfs中创建一个文件,而第二个不会
4、Linux中hadoop的修改
(1)Hadoop中hdfs的/flume文件夹
(2)可以先在hadoop的hdfs中创建此文件夹
(3)在给此文件夹其他用户可以操作的权限,例如
①Hadoop fs -chmod 777 /flume
5、启动flume方式:
(1)在flume文件夹下的bin目录下
Flume-ng agent --name a1 --conf …/conf --conf-file …/conf/flume_hdfs.conf
(2) 注意:…/conf 可以写绝对路径,这里用的是相对路径
6、Zookeeper 服务系统 对分布式集群协调服务
Zookeeper自身也是分布式架构
作用:负责管理集群的各类事件,拦截集群设备的事务,感知并作出处理,让集群HA(高可用,有机器死掉,或某些文件发生更改,通过过滤拦截,迅速感知,并作出反应处理)
1/ 使用zookeeper集群节点个数为奇数
1台节点==单机版测试
以5台节点举例:
5台机器都安装了zookeeper,配置文件写明集群size=5,每台节点ID为1-5,集群的领导为投票产生,3888端口为小弟端口,2888端口为领导端口,谁先获得3票谁启动2888端口,所以5台节点,依次启动,3号节点为领导,并且开始正常运行zookeeper,也就是说,zookeeper只需要有半数以上的节点活着,就可以生存。
如果领导挂掉,还剩1 2 4 5 共4台设备,继续投票,看谁的数据版本最新,如果1 2最新,再看谁的ID号大,谁当领导。
安装部署:
1.在1号节点下解压zookeeper-x.x.x.tar.gz
2.解压后进入zookeeper目录下
a.删除docs文档和src源码(无用/浪费拷贝时间)
命令:rm -rf docs src
b.进入conf目录下 cd conf
c.复制要修改的文件,防止改错
mv zoo_sample.cfg zoo.cfg
d.修改zoo.cfg
e.改为:dataDir=/root/zkdata
f.文件末尾加入内容(声明集群其他节点和端口) 如:server.1 = 主机名:2888:3888
g.保存退出 wq!
h.去root下创建zkdata目录,并创建一个叫myid的文件,内容为机器ID 如:1
命令:mkdir zkdata
echo 1 > zkdata/myid
(操作完后记着检查下文件里是不是内容为1)
i.在1号节点下,把配置好的zookeeper复制到其他节点
命令:scp -r zookeeper-x.x.x/ 机器2:
P
W
D
s
c
p
−
r
z
o
o
k
e
e
p
e
r
−
x
.
x
.
x
/
机
器
3
:
PWD scp -r zookeeper-x.x.x/ 机器3:
PWDscp−rzookeeper−x.x.x/机器3:PWD
j.然后去其他集群节点,重复h项操作(改ID)
启动zookeeper集群:
1/ cd zookeeper-x.x.x
2/ bin/zkServer.sh start
3/ 检查jps中是否多了QuorumPeerMain
4/ 查看是否正常工作 bin/zkServer.sh status
如果出现Error contacting service 说明正在投票
5/ 继续启动其他机器节点
6/ 当启动数量过半数时,bin/zkServer.sh status
显示Mode:leader的就是当选领导的机器节点,其他都为Mode:follower 小弟
**1/ 解压 到usr下
2/ 配置sqoop下的conf目录下的env环境文件
Gedit sqoop-env-template.sh
找到被注释的有关HADOOP的变量 2个
=后 配usr/hadoop文件夹路径即可
Hbase路径用不到 就注释掉
Hive也可以不配置 Zookeeper也可以不配置
3/ 将mysql的jdbc的jar包 拷贝到sqoop/lib/下
4/ 在sqoop的bin目录下,有很多命令
下面命令是测试连接mysql
(首先,保证mysql’有’密码,没设置密码的,自行百度把 mysql中的user表的Host列的localhost改为% 这样就给了外部机器访问权限
查询–新建查询,输入sql语句刷新mysql:
flush privileges;
然后把mysql的my.ini文件加入
[mysqld]
bind-address=0.0.0.0
这段命令也是给所有连接权限)重启mysql服务
//后面加一行 --driver com.mysql.jdbc.Driver
返回数据库信息
返回库里的表的信息
Hdfs导出到mysql
直接复制这段:./sqoop export --connect jdbc:mysql://xxxxxxx(PS:IPv4地址):3306/test --username root --password xxxxxx(PS:数据库密码) --input-fields-terminated-by “#” --table xxx(PS:数据库名) --export-dir /flume/output/part-r-00000注意!!!
–input-fields-terminated-by 分割命令后面必须是单字符!!!
把连库串修改下
注:
连裤串后面可以加UTF-8之类的
input-fields-terminated-by ‘—’ 根据’—’分割字段
–export-dir 后面是hdfs里的数据块



