简介:这篇文章介绍,安装Centos6.9环境下的Zookeeper,Mysql,Kafka,Canal,Flume,Hadoop,Hive,Sqoop,Hbase,Spark(后续会增加ELK,Ozzie,Azkban)
新建虚拟机-->典型-->Linux,Centos64-->名字,路径-->一路默认-->完成
-->自定义高级-->下一步-->稍后安装,下一步-->Linux,Centos64-->名字,路径-->2核2数总共2-->设置内存-->
NAT模式(宿主机可以上网,虚拟机便也可以)-->下一步-->创建新磁盘-->20G默认,下一步-->下一步完成
编辑虚拟机-->网络适配器(NAT)
CD/DVD-->ios映像文件-->选7版本的那个
内存 7G
打开虚拟机-->叉掉下面的黄框-->选第一个回车等待安装-->skip
安装选项页面
next-->简体中文-->美式键盘-->选基本存储-->是,格式化(虚拟机)磁盘-->配置主机名node-1,点击配置网络-->双击eth0网卡进行编辑
-->自动连接打上勾(开机自启)-->IPV4设置,自动DHCP就会自动分配ip上网,这里选手动manual-->添加-->设置地址(网关的最后一位修改),
掩码255.255.255.0,网关在虚拟网络编辑器中找,DNS写网关即可-->apply,close,next-->时区上海-->填密码确认-->默认next-->写到磁盘
-->选基础服务版next(7有705包)-->重启-->root登录密码-->ifconfig查看ip-->ping百度-->和宿主机互ping
虚拟机上不了网:
检查网卡:网关和NAT设置里面的网关必须设置成一样
echo "nameserver 8.8.8.8" >>/etc/resolv.conf
service network restart
关机克隆-->完整克隆,新名字-->新虚拟机网络适配器-->高级-->mac地址再生出一次-->确定
-->开机新的,加载
改主机名-->
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=<主机名> #每个节点改成相应主机名
NETWORKING_IPV6=no
PEERNTP=no
虚拟网卡mac地址修改(删除一个文件,等其开机再重新生成)
rm -f /etc/udev/rules.d/70-persistent-net.rules
将网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0的uuid和hwaddr这两行删除:
再次重启网卡(不行的话reboot再重启网卡)
改IP地址-->
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 //设备名称,不要修改
BOOTPROTO=static //不要修改
BROADCAST=10.10.22.255 //广播地址,一般为本网段的最后一个IP
IPADDR=10.10.22.9 //ip地址
GATEWAY=10.10.22.1 //网关
NETMASK=255.255.255.0 //子网掩码
NETWORK=10.10.22.0 //网段地址
ONBOOT=yes //不要修改
TYPE=Ethernet //不要修改
DNS1=202.96.128.166 #主DNS1地址
DNS2=202.96.134.133 #备用DNS2地址
配置hosts vim /etc/hosts(每台)
10.21.22.8 node-1
10.21.22.9 node-2
10.21.22.10 node-3
免密登录(每台)
ssh-keygen -t rsa 一路回车
将生成的公钥添加到本地认证文件中 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
设置 authorized_keys 的访问权限 chmod 600 /root/.ssh/authorized_keys
远程连接工具连接虚拟机: nat模式将适配器的vmnet8的'internet协议版本4'改成设置ip,同网段的不同ip,子网掩码:255.0.0.0
将每个节点上生成的 id_rsa.pub 复制到其他所有节点并添加到它们的认证文件中
比如:node-1 上生成的 id_rsa.pub,复制到 node-2 和 node-3 上
#node-1 上执行
scp /root/.ssh/id_rsa.pub node-2:/root/
#在 node-2 上执行
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
#node-1 上执行
scp /root/.ssh/id_rsa.pub node-3:/root/
#在node-3 上执行
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
其余节点类似操作,验证是否配置免密登录成功,比如执行
ssh root@node-2 应该不需要密码了
(-----------------------建议软件都安装在/opt/software下)
搭建Zookeeper集群(leader+follower)
JDK(每台卸载自带安装新的)
卸载掉自带的openjdk
查询 java 相关的包 rpm -qa | grep -i jdk
卸载掉自带的openjdk rpm -qa | grep openjdk | xargs rpm -e --nodeps
创建一个目录放软件 mkdir -p /export/server
将linux版本的jdk放入到server目录下ll查看 tar zxvf jdk-8u65-linux-x64.tar.gz
删除安装包 rm -rf jdk-8u65-linux-x64.tar.gz
配置jdk的环境变量
vi /etc/profile 然后在最后一行
export JAVA_HOME=/root/apps/jdk1.8.0_65 #这行要改/export/server/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然后source /etc/profile 让其生效
搭建Zookeeper集群
同步时间(所有节点ntp服务)
安装ntp yum install -y ntp
开机启动 chkconfig ntpd on
检查时候启动 chkconfig --list ntpd #其中 2-5 为 on 状态就代表成功
主节点 ntpserver 配置 vi /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
启动服务service ntpd start
查看状态 ntpstat
从节点 配置 vi /etc/ntp.conf
drtrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server node-1 prefer #主机名要改
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
请求服务器前,请先使用 ntpdate 手动同步一下时间
ntpdate -u node-1 #主节点 ntp 服务器
service ntpd start
查看状态 ntpstat
关闭防火墙(三个节点,永久) chkconfig iptables off
看状态 chkconfig iptables --list
service iptables status(需要service iptables stop)
安装zk(启动zkServer.sh start)
/export/server中安放zk压缩包
解压tar zxvf zookeeper-3.4.5.tar.gz 删除压缩包rm zookeeper-3.4.5.tar.gz
mv zookeeper-3.4.5 zookeeper 重命名文件夹
vi /etc/profile
export ZOOKEEPER_HOME=/export/server/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
生效 source /etc/profile
cd /export/server/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
添加内容:
dataDir=/export/data/zkdata ##zookeeper运行时的数据 这项是修改
server.1=newnode-1:2888:3888 ## (心跳端口、选举端口)
server.2=newnode-2:2888:3888
server.3=newnode-3:2888:3888
在/export/data/zkdata文件夹下新建myid文件,myid的文件内容为:
cd zkdata
echo 1 > myid
其他节点(暂时没做)
##分发安装包到其他机器
scp -r /export/server/zookeeper root@newnode-2:/export/server/zookeeper
scp -r /export/server/zookeeper root@newnode-3:/export/server/zookeeper
##修改其他机器的配置文件
修改myid文件
到node-2上:修改myid为:2
到node-3上:修改myid为:3
##启动(每台机器)
/export/server/zookeeper/bin/zkServer.sh start
在/etc/profile配置了zkhome后可以直接zkServer.sh start
或者编写一个脚本/shell/onekey_zk.sh来批量启动所有机器:来批量启动所有机器:
for host in "newnode-1 newnode-2 newnode-3"
do
ssh $host "source/etc/profile;/export/server/zookeeper/bin/zkServer.sh start"
done
查看日志 在哪个目录下启动的就在哪个目录下输入 cat zookeeper.out
有个地址已在使用Address already in use的错,端口占用
zoo.cfg,更换ZooKeeper的clientPort配置,例如,
可以将其设置为2080:
##查看集群状态
jps(查看进程)
zkServer.sh status(查看集群状态,主从信息)
单个启动sh /export/server/zookeeper/bin/zkServer.sh start
如果启动不成功,可以观察zookeeper.out日志,查看错误信息进行排查
安装mysql(启动mysql service mysql start)
--查看系统之前是否已安装MySQL
rpm -qa | grep mysql
--有的话,卸载
rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 --nodeps
--离线安装mysql rpm
rpm -ivh MySQL-server-5.5.28-1.linux2.6.x86_64.rpm --nodeps --force
rpm -ivh MySQL-client-5.5.28-1.linux2.6.x86_64.rpm
(-ivh :安装显示安装进度--install--verbose--hash)
--启动mysql
service mysql start
#查看运行状态
service mysqld status 失败 MySQL is running but PID file could not be found
ps aux | grep mysql
kill -9 3961
service mysqld status MySQL is not running, but lock file (/var/lock/subsys/mysql[失败]ts
rm /var/lock/subsys/mysql
再启动mysql service mysql start
查看service mysqld status
启动mysql控制台:
mysql
mysql>USE mysql;
mysql>UPDATE user SET Password=PASSWORD('123456') WHERE user='root';
mysql>FLUSH PRIVILEGES;
exit;
允许远程登录
mysql -u root -p
Enter Password: <your new password>
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
完成后就能远程管理mysql了
查看版本及端口号
select version();
show global variables like 'port';
安装kafka(启动cd /export/server/kafka/kafka/bin再sh kafka-server-start.sh /export/server/kafka/kafka/config/server.properties) 需要zk
tar -zxvf kafka_2.11-1.0.0.tgz 重命名文件夹 mv kafka_2.11-1.0.0.tgz kafka
删包rm kafka_2.11-1.0.0.tgz
日志目录存放的地方 mkdir -p /export/logs/kafka .在每台机器上都创建好。
在/export/logs/kafka
rm -rf site-docs
修改cat server.properties |grep -v '#' (小v是反选)
config/server.properties #修改三个位置
# broker代表我们kafka集群中的每个broker实例。这个是唯一的。
broker.id=0
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
# 日志目录存放的地方 mkdir -p /export/logs/kafka .在每台机器上都创建好。
log.dirs=/export/logs/kafka
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
# 由于存放了很多元数据信息到zookeeper中,需要制定zookeeper地址
zookeeper.connect=newnode-1:2080,newnode-2:2080,newnode-3:2080
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
其他节点(暂时缺少没做)
启动kafka
cd /export/server/kafka/kafka/bin
sh kafka-server-start.sh /export/server/kafka/kafka/config/server.properties
查看kafka状态(ZooInsepector工具)
点start.bat
canal安装
开启mysql的binlog本例中采用的mysql版本为5.7。
一般可以通过修改/etc/my.cnf来开启binlog,修改如下字段:
log-bin = mysql-bin
binlog-format = ROW
server-id = 1
##binlog_format 必须设置为 ROW, 因为在 STATEMENT 或 MIXED 模式下, Binlog 只会记录和传输 SQL 语句(以减少日志大小),而不包含具体数据,我们也就无法保存了。
#另外:若/etc/my.cnf不存在,可以进入 /usr/share/mysql将my-medium.cnf 移动到etc 并且改名为my.cnf
cp my-medium.cnf /etc/my.cnf
查看二进制日志是否打开:mysql> SHOW VARIABLES LIKE 'log_bin';
查看binlog 文件的目录位置: mysql> SHOW VARIABLES LIKE 'datadir';
mysql中创建canal数据库
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
--GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;
建/export/server/canal目录放安装包
tar -zxvf canal.deployer-1.0.26-SNAPSHOT.tar.gz 出来四个目录
到conf目录下:
vi canal.properties
canal.id= 1
canal.ip=192.168.21.8 #改
canal.port= 11111
canal.zkServers=192.168.213.8:2080 #改
# flush data to zk
canal.zookeeper.flush.period = 1000
# flush meta cursor/parse position to file
canal.file.data.dir = ${canal.conf.dir}
canal.file.flush.period = 1000
## memory store RingBuffer size, should be Math.pow(2,n)
canal.instance.memory.buffer.size = 16384
## memory store RingBuffer used memory unit size , default 1kb
canal.instance.memory.buffer.memunit = 1024
## meory store gets mode used MEMSIZE or ITEMSIZE
canal.instance.memory.batch.mode = MEMSIZE
## detecing config
canal.instance.detecting.enable = false
#canal.instance.detecting.sql = insert into retl.xdual values(1,now()) on duplicate key update x=now()
canal.instance.detecting.sql = select 1
canal.instance.detecting.interval.time = 3
canal.instance.detecting.retry.threshold = 3
canal.instance.detecting.heartbeatHaEnable = false
# support maximum transaction size, more than the size of the transaction will be cut into multiple transactions delivery
canal.instance.transaction.size = 1024
# mysql fallback connected to new master should fallback times
canal.instance.fallbackIntervalInSeconds = 60
# network config
canal.instance.network.receiveBufferSize = 16384
canal.instance.network.sendBufferSize = 16384
canal.instance.network.soTimeout = 30
# binlog filter config
canal.instance.filter.druid.ddl = true
canal.instance.filter.query.dcl = true
canal.instance.filter.query.dml = false #false是放行的操作,本系统暂时需要dml操作
canal.instance.filter.query.ddl = true
canal.instance.filter.table.error = false
canal.instance.filter.rows = false
# binlog format/image check
canal.instance.binlog.format = ROW,STATEMENT,MIXED
canal.instance.binlog.image = FULL,MINIMAL,NOBLOB
# binlog ddl isolation
canal.instance.get.ddl.isolation = false
#################################################
######### destinations #############
#################################################
canal.destinations= mysql1,mysql2,mysql3 #配置的实例名称,根据自己需检测的库来,名字自己指定
# conf root dir
canal.conf.dir = ../conf
# auto scan instance dir add/remove and start/stop instance
canal.auto.scan = true
canal.auto.scan.interval = 5
canal.instance.tsdb.spring.xml=classpath:spring/tsdb/h2-tsdb.xml
#canal.instance.tsdb.spring.xml=classpath:spring/tsdb/mysql-tsdb.xml
canal.instance.global.mode = spring
canal.instance.global.lazy = false
#canal.instance.global.manager.address = 127.0.0.1:1099
#canal.instance.global.spring.xml = classpath:spring/local-instance.xml
#canal.instance.global.spring.xml = classpath:spring/memory-instance.xml
canal.instance.global.spring.xml = classpath:spring/file-instance.xml #若是单机版注释掉最后一行,若是高可用注释掉倒数第二行
#canal.instance.global.spring.xml = classpath:spring/default-instance.xml
复制实例,将example改为自己需要的名字。如oms1
配置单个实例:
vi conf/oms1/instance.properties
## mysql serverId
canal.instance.mysql.slaveId = 1234
# position info,需要改成自己的数据库信息
canal.instance.master.address = 127.0.0.1:3306
canal.instance.master.journal.name = #配置binlog的file 可以不用配置(默认是以当前启动)
canal.instance.master.position = #配置binlog的postion 可以不用配置(默认是以当前启动)
canal.instance.master.timestamp =
#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
# username/password,还有检测的数据库名称需要改成自己的数据库信息
canal.instance.dbUsername = canal
canal.instance.dbPassword = canal
canal.instance.defaultDatabaseName = canal_test
canal.instance.connectionCharset = UTF-8
# table regex 过滤掉的表的名称
canal.instance.filter.regex = .*\\..*
如果是配置高可用,则需要在另外一台服务器上配置相同的canal不过slaveid不能相同
启动canal(bin下)
启动:sh startup.sh
startup.sh启动失败了,每次都在函数的地方失败,命令行处(esc,再冒号),输入set ff=unix,然后:wq写入
jps 出现 CanalLauncher, canal.log里面有the canal server is running now ......
去实例的log查看日志出现 prepare to find start position just show master status 则成功
停止:sh stop.sh
安装flume
apache-flume-1.6.0-bin.tar.gz包放在/export/server下,解压tar zxvf apache-flume-1.6.0-bin.tar.gz,重命名mv apache-flume-1.6.0-bin flume
配置/etc/profile加上
export FLUME_HOME=/export/server/flume
export PATH=$PATH:$FLUME_HOME/bin
生效 source /etc/profile
修改flume-env.sh配置文件
cp flume-env.sh.template flume-env.sh
配置上JAVA_HOME
export JAVA_HOME=/export/server/jdk1.8.0_65
安装hadoop 2.7.4(前需JDK)
将文件解压放在/opt/software下 重命名为hadoop文件夹
1.修改hadoop/etc/hadoop目录下hadoop-env.sh,配置java jdk路径,大概在27行配置,如下:
export JAVA_HOME=/export/server/jdk1.8.0_65
2.修改core-site.xml,配置内容如下
<configuration>
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://newnode-1:9000</value> #修改这项namenode的主机名
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/software/hadoop/tmp</value> #修改到hadoop的tmp目录下
</property>
</configuration>
3.修改hdfs-site.xml,修改配置如下
<!-- 设置hdfs副本数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!- secondary namenode所在主机的ip和端口 - >
<!-为了减小Namenode内存的开销,应该将SecondaryNamenode放在不同机器上- >
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>newnode-2:50090</value>
</property>
4.mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!-- 指定mr运行时框架,这里指定在yarn上,默认是local -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5.yarn-site.xml
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>newnode-1</value>
</property>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
6.slaves文件,里面写上从节点所在的主机名字
vi slaves
newnode-1
newnode-2
newnode-3
将hadoop添加到环境变量
vim /etc/proflie
export HADOOP_HOME=/opt/software/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
将hadoop文件夹放到其他服务器上
scp -r /opt/software/hadoop root@newnode-2:/opt/software/hadoop
scp -r /opt/software/hadoop root@newnode-3:/opt/software/hadoop
格式化namenode(本质是对namenode进行初始化)
hdfs namenode -format (hadoop namenode -format)
启动hadoop(如果配置了 etc/hadoop/slaves 和 ssh 免密登录,可一键启动)
先启动HDFS
sbin/start-dfs.sh
再启动YARN
sbin/start-yarn.sh
验证是否启动成功
使用jps命令验证
27408 NameNode
28218 Jps
27643 SecondaryNameNode (secondarynamenode)
28066 NodeManager
27803 ResourceManager
27512 DataNode
http://192.168.1.101:50070 (HDFS管理界面)
http://192.168.1.101:8088 (MR管理界面,yarn的端口)
Hive的安装(先装JDK和Hadoop,mysql)
tar -zxvf hive-1.2.1.tar.gz 解压重命名文件夹为hive
vim /etc/profile
export HIVE_HOME=/opt/software/hive
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile
输入hive --version 查看版本
配置HIVE_HOME环境变量,cp hive-env.sh.template hive-env.sh
vi conf/hive-env.sh
配置其中的$hadoop_home
HADOOP_HOME=/opt/software/hadoop
修改hive配置文件 /opt/software/hive/conf 路径下
初次解压发现hive-site.xml配置文件并没有,此时需要我们自己创建并配置hive-site.xml
<configuration>
<property>
<!-- 元数据库的链接地址 mysql loacalhost改成newnode-1 hivedb第一次会自己帮你创建 -->
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://newnode-1:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
<!-- 如果 mysql 和 hive 在同一个服务器节点,那么请更改 hadoop02 为 localhost -->
</property>
<property>
<!-- 指定mysql驱动 -->
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<!-- 指定mysql用户名 -->
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<!-- 指定mysql密码 请输入自己的MySQL连接密码 -->
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
<poperty>
<!-- 指定hive数据仓库存在hdfs上的目录,默认配置可更改 -->
<name>hive.metastore.warehouse.dir</name>
<value>/opt/software/hive/warehouse</value>
<description>hive default warehouse, if nessecory, change it</description>
</property>
</configuration>
将MySQL的驱动添加到hive安装目录的lib下
cp /export/server/mysql/mysql-connector-java-5.1.32.jar /opt/software/hive/lib
如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
mysql -u root -p
#(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
启动hive
输入hive即可(刚开始启动不了,显示连接不上mysql,后来启动hadoop后start-dfs.sh,start-yarn.sh再启动hive即可)
另其他问题:
1.Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的
/home/hadoop/app/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar
2.rm -rf log4j-slf4j-impl-2.6.2.jar该包会导致日志系统冲突,予以删除即可,自动使用Hadoop下的jar包
Hive几种使用方式:
1.Hive交互shell bin/hive
2.Hive JDBC服务(参考java jdbc连接mysql)
3.hive启动为一个服务器,来对外提供服务
bin/hiveserver2(先在node-1这个 /export/server/hive)
nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err &
启动成功后,可以在别的节点上用beeline去连接
bin/beeline -u jdbc:hive2://mini1:10000 -n root
或者(再node-3用的这个)
bin/beeline
! connect jdbc:hive2://node-1:10000 用户名root 密码hadoop
set hive.exec.mode.local.auto=true; 本地模式
4.Hive命令
hive -e ‘sql’
bin/hive -e 'select * from t_test'
Sqoop安装(需要JDK,Hadoop)
解压tar --zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
重命名mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop
vim /etc/profile
增加两行:
export SQOOP_HOME=/opt/software/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
source /etc/profile
cd $SQOOP_HOME/conf
mv sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh
export HADOOP_COMMON_HOME=/opt/software/hadoop/
export HADOOP_MAPRED_HOME=/opt/software/hadoop/
export HIVE_HOME=/opt/software/hive
加入 mysql 的 jdbc 驱动包
cp /opt/software/hive/lib/mysql-connector-java-5.1.32.jar /opt/software/sqoop/lib/
验证启动
sqoop list-databases --connect jdbc:mysql://localhost:3306/ --\
username root --password 123456
本命令会列出所有 mysql 的数据库。
到这里,整个 Sqoop 安装工作完成。
Hbase安装(需要Hadoop集群和Zookeeper以及JDK)
解压文件,配置hbase集群,要修改3个文件
注意:要把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下
cp /opt/software/hadoop/etc/hadoop/hdfs-site.xml /opt/software/hbase/conf
cp /opt/software/hadoop/etc/hadoop/core-site.xml /opt/software/hbase/conf
在hbase/conf路径下配置hbase-env.sh
export JAVA_HOME=/export/server/jdk1.8.0_65
export HBASE_CLASSPATH=/opt/software/hadoop/conf
#告诉hbase使用外部的zk
export HBASE_MANAGES_ZK=false
修改 hbase-site.xml
<configuration>
<!-- 指定hbase在HDFS上存储的路径,存在hdfs不存在本地了 -->
<!-- hbase.rootdir 里面的 HDFS 地址是要跟 Hadoop 的 core-site.xml 里面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、端口必须一致-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://newnode-1:9000/hbase</value>
</property>
<property>
<!-- 指定hbase为分布式的 -->
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/export/server/zookeeper/data/</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>newnode-1,newnode-2,newnode-3</value>
</property>
<property>
<!-- 这里我前面设置了zk的port的2180 -->
<name>hbase.zookeeper.property.clientPort</name>
<value>2080</value>
</property>
</configuration>
修改 regionservers
newnode-1
newnode-2
newnode-3
scp -r /opt/software/hbase/ newnode-2:/opt/software/
scp -r /opt/software/hbase/ newnode-3:/opt/software/
export HABSE_HOME=/opt/software/hbase
export PATH=$PATH:$HABSE_HOME/bin
sh start-hbase.sh
jps出现HMaster和HRegionServer,输入hbase进入控制台
出错:stopping hbasecat: /tmp/hbase-root-master.pid: 没有那个文件或目录
hbase-env.sh中修改pid文件的存放路径,配置项如下所示:
export HBASE_PID_DIR=/opt/software/hadoop/pids
安装Spark(需要hadoop,这里的压缩包需要和hadoop的版本对应起来,另外需要scala环境)
tar -zxvf scala-2.11.8.tgz -C /opt/software
vi /etc/profile
//配置环境,在末尾加入如下代码
export SCALA_HOME=/opt/software/scala
export PATH=$PATH:$SCALA_HOME/bin
source /etc/profile //设置生效
验证
scala -version
同步到从节点
scp -r /opt/software/scala/ newnode-2:/opt/software/
scp -r /opt/software/scala/ newnode-3:/opt/software/
每个节点配置环境变量,source
tar -zxvf spark-2.0.2-bin-hadoop2.7.tgz -C /opt/software
mv spark-2.0.2-bin-hadoop2.7 spark
配环境变量
export SPARK_HOME=/opt/software/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
spark配置
(1)修改conf/slaves文件
将slaves.template改名为slaves
cd /opt/software/spark/conf //配置文件所在目录
mv slaves.template slaves //修改为spark可识别文件
并将slaves内localhost改为
newnode-2
newnode-3
(2)修改spark-env.sh文件
将spark-env.sh.template改名为spark-env.sh
mv spark-env.sh.template spark-env.sh //改名
并在文件末未添加如下代码
export JAVA_HOME=/export/server/jdk1.8.0_65
export SCALA_HOME=/opt/software/scala
export HADOOP_HOME=/opt/software/hadoop
export HADOOP_CONF_DIR=/opt/software/hadoop/etc/hadoop
#192.168.213.8为spark集群master节点的IP地址
export SPARK_MASTER_IP=192.168.213.8
#spark里许多用到内存的地方默认1g 2g 这里最好设置大与1g
export SPARK_WORKER_MEMORY=4g
#每台机器总cores
export SPARK_WORKER_CORES=2
#每台机器运行的worker数目
export SPARK_WORKER_INSTANCES=1
(3)copy到从节点上
使用scp命令copy主节点spark文件夹到从节点
cd /opt/software
scp -r spark newnode-2:/opt/software
scp -r spark newnode-3:/opt/software
注:若出现permission denied则给spark文件夹授权读写chmod 777 /opt/software/spark
5.启动spark集群
启动hadoop集群
cd /opt/software/hadoop/sbin
sh start-all.sh
启动spark集群
cd /opt/software/spark/sbin
sh start-all.sh
然后在三台服务器分别jps出现新开启的Master和Worker进程
进入Spark的WebUI界面,可以通过
192.168.213.8:8080