1、准备工作
先说一下我的配置 :我是在virturbox上进行安装的、只用了3台centos7 mini版本的虚拟机进行搭建的。操作系统的光盘在网上下吧。
这是我hostname以及IP,我的每台虚拟机使用了2个网络、分别是NAT和host-only网络、NAT主要是和外网相连、要下载一些辅助软件、host-only网络主要是在hadoop集群之间进行通信使用!具体怎么设置网络、百度吧!这些都是基础技能、我也不想写!
当然了在安装操作系统是3台虚拟机的时区都选择上海、这也是为避免以后的不必要的麻烦
1 hadoop-master 192.168.56.101
2 hadoop-node1 192.168.56.102
3 hadoop-node2 192.168.56.103
2、配置服务器 (以下3个动作需要在3个虚拟机上都要修改)
2.1
关闭防火墙:
centos7://临时关闭
service iptables stop
//禁止开机启动
chkconfig iptables off
ubuntu16.04:
//临时关闭
sudo ufw disable
2.2 设置主机名称
查看现在的主机名称
$ hostname abls234243
永久修改主机名称
vim /etc/sysconfig/network
HOSTNAME=hadoop-master
# ip 与 hostname 绑定
vim /etc/hosts
192.168.56.101 hadoop-master
2.3 免密码登录
在每台虚拟机上创建hadoop用户:
useradd hadoop
设置密码:
passwd hadoop
切换到root用户
vi /etc/sudoers
在其中添加 hadoop ALL=(ALL) ALL
Hadoop用户就有了root权限 也就可以使用sudo命令了
切换到hadoop用户、在家目录下、以下操作都子家目录下进行
# 设置 ssh 免密码登录(在三个节点分别执行以下命令)
ssh-keygen -t rsa
# ~/.ssh/id_rsa.pub就是生成的公钥,把三个id_rsa.pub的内容合并,写入以下文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 3台虚拟机互相复制到其他节点
scp ~/.ssh/authorized_keys zkpk@hss01:~/.ssh/
scp ~/.ssh/authorized_keys zkpk@hss02:~/.ssh/
# CentOS7中还需要设置权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
#修改/etc/hosts文件
vi /etc/hosts
添加如下: 每台都要添加
192.168.56.101 hadoop-master
192.168.56.102 hadoop-node1
192.168.56.103 hadoop-node2
# 每台都要安装ssh
sudo yum install openssh-server
# 3台虚拟机之间分别用ssh命令试一试能不能连接
ssh hadoop-master
ssh hadoop-node1
ssh hadoop-node2
第一次可能需要填写密码、后面ssh连接就不会再要密码了
如果都能连接那都没问题了 服务器的配置完成! ok
#如果没连接成功 后面的就不要做了
3、Java环境安装
# 3台虚拟机都都要安装
我的所有安装包都是放在家目录下的、好管理
jdk版本:jdk-8u144-linux-x64.tar.gz 自行下载
tar zxvf jdk-8u144-linux-x64.tar.gz
cd jdk1.8.0_144
ls
配置jdk环境变量
sudo vim /etc/profile
在最后面添加
export JAVA_HOME="/home/hadoop/jdk1.8.0_144"
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
测试是否成功
输入java javac等命令 如果什么都没有那就报错了
以下的操作不要做了
4、zookeeper集群安装
1、
我使用的版本是:zookeeper-3.4.10.tar.gz
tar zxvf zookeeper-3.4.10.tar.gz
cd zookeeper-3.4.10/conf
cp zoo_sample.cfg zoo.cfg
2、
vim zoo.cfg
添加如下:
dataDir=/home/hadoop/zookeeper-3.4.10/data
dataLogDir=/home/hadoop/zookeeper-3.4.10/logs
server.1=hadoop-master:2888:3888
server.2=hadoop-node1:2888:3888
server.3=hadoop-node2:2888:3888
3、
zookeeper根目录执行, 也就是/home/hadoop/zookeeper-3.4.10下
mkdir data
mkdir logs
# 在dataDir目录下创建myid文件写入1
vim data/myid
4、
复制ZooKeeper到其他节点
scp -r zookeeper-3.4.10 hadoop@hadoop-node1:~/
scp -r zookeeper-3.4.10 hadoop@hadoop-node2:~/
# 将hadoop-node1中的myid改为2,hadoop-node2中的myid改为3
vim ~/zookeeper-3.4.10/data/myid
5、
配置环境变量、3台虚拟机都要执行
sudo vim /etc/profile
在最后面添加
export ZOOKEEPER_HOME="/home/hadoop/zookeeper-3.4.10"
export PATH=$ZOOKEEPER_HOME/bin:$PATH
source /etc/profile
测试
zkServer.sh zkCli.sh等命令就有了
6、
开启zookeeper集群:
在每台虚拟机上执行命令:zkServer.sh start
执行完了以后查看状态:zkServer.sh status
显示为:
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
集群启动成功!
也可以用jps命令查看
也可以用zkClis.sh 默认连接本机的zk 他是zk集群的客户段
出现这种提示:[zk: localhost:2181(CONNECTED) 0]
也说明集群启动成功
输入zk命令 ls /
退出客户端用 quit
如果失败或者报异常:
查看日志在/home/hadoop/zookeeper-3.4.10/logs目录下
失败了找百度吧! 你会发生什么问题我也不清楚
7、
关闭集群
在每台虚拟机上执行 zkServer.sh stop
如果没成功、后面的先不要做了
5、hadoop的HA集群安装
hadoop集群有2中模式:
1:普通的集群模式
2:基于zookeeper的HA高可靠性的模式
这里我直接使用第2中模式搭建Hadoop集群、至于第一种很简单、百度上有很多资料可以查看
1、
上传tar包、我使用的是hadoop-2.7.5.tar.gz
tar -xf hadoop-2.7.5.tar.gz
cd hadoop-2.7.5
# namenode信息存放目录
mkdir name
# datanode信息存放目录
mkdir data
cd etc/hadoop
vim core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1/</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.7.5/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop-master:2181,hadoop-node1:2181,hadoop-node2:2181</value>
</property>
<property>
<name>ipc.client.connect.max.retries</name>
<value>30</value>
</property>
<property>
<name>ipc.client.connect.retry.interval</name>
<value>5000</value>
</property>
</configuration>
注:不要忘了创建tmp目录
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop-node1:50090</value>
</property>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop-master:9000</value>
</propert
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop-master:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop-node1:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop-node1:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop-master:8485;hadoop-node1:8485;hadoop-node2:8485/ns1</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/hadoop-2.7.5/journaldata</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
vim yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 开启RM高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id 我这里随便叫一个 yrc-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>hadoop-node1,hadoop-master</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.hadoop-node1</name>
<value>hadoop-node1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.hadoop-master</name>
<value>hadoop-master</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop-master:2181,hadoop-node1:2181,hadoop-node2:2181</value>
</property>
</configuration>
vi hadoop-env.sh
修改export JAVA_HOME=/home/hadoop/jdk1.8.0_144
vim slaves
添加:
hadoop-master
hadoop-node1
hadoop-node2
复制到其他节点:
scp -r ~/hadoop-2.7.5 hadoop@hadoop-node1:~/
scp -r ~/hadoop-2.7.5 hadoop@hadoop-node2:~/
同样在每台机器上设置hadoop的环境变量:
sudo vi /etc/profile
添加:
export HADOOP_HOME="/home/hadoop/hadoop-2.7.5"
export PATH=$HADOOP_HOME/bin:$PATH
export PATH=$HADOOP_HOME/sbin:$PATH
source /etc/profile
在命令行确认是否配置成功: 输入start-hdfs.sh 看是否有这个命令 这个时候不要回车执行
***** 启动集群 严格按照下面的步骤
在家目录下执行命令
1、启动zookeeper集群, 分别在3台机器上执行
zkServer.sh start
# 查看状态:一个leader,两个follower
zkServer.sh status
2、同样在3台机器上执行:
hadoop-daemon.sh start journalnode
3、以下命令只在hadoop-master机器上执行
hdfs namenode -format
4、执行复制命令
scp -r hadoop-2.7.5/tmp/ hadoop@hadoop-node1:/home/hadoop/hadoop-2.7.5
scp -r hadoop-2.7.5/tmp/ hadoop@hadoop-node2:/home/hadoop/hadoop-2.7.5
5、hdfs zkfc -formatZK
6、start-dfs.sh
7、start-yarn.sh
验证是否成功:
# 通过以下IP用浏览器访问,一个处于active,一个处于standby,说明集群启动成功。
http://192.168.56.101:50070
NameNode 'hadoop-master:9000' (active)
http://192.168.56.101:50070
NameNode 'hadoop-node1:9000' (standby)
# 验证HDFS HA(向hdfs上传一个文件)
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
#kill掉active的NameNode
kill -9 <pid of NN>
访问:http://192.168.56.101:50070 无法打开
访问:http://192.168.56.102:50070
NameNode 'hadoop-node1:9000' (active)
执行: hadoop fs -ls / 也可以看到有profile文件
#手动启动挂掉的那个NameNode,在hadoop-master上执行
hadoop-daemon.sh start namenode
访问:http://192.168.56.101:50070
显示:NameNode 'hadoop-master:9000' (standby)
# 验证Yarn HA
http://192.168.56.101:8088/
正常显示内容。
至此hadoop的ha集群模式搭建完毕!
在hadoop-master上执行jps命令: 会有如下进程
1841 DFSZKFailoverController
1222 QuorumPeerMain
2008 ResourceManager
1497 DataNode
1387 NameNode
2124 NodeManager
8429 Jps
1695 JournalNode
在hadoop-node1上执行jps命令:
3905 Jps
1763 DataNode
2117 NodeManager
1882 JournalNode
1533 QuorumPeerMain
1982 DFSZKFailoverController
在hadoop-node2上执行jps命令:
1376 JournalNode
1220 QuorumPeerMain
1476 NodeManager
4648 Jps
1278 DataNode
如果在启动的过程中,出现问题,可以查看日志文件:
/home/hadoop/hadoop-2.7.5/logs 有些复杂!
集群的启动和关闭:
# 启动
zkServer.sh start 此命令在每台机器上都要执行,下面2个在hadoop-master机器上执行
start-dfs.sh
start-yarn.sh
# 关闭
stop-yarn.sh
stop-dfs.sh
zkServer.sh stop 此命令在每台机器上都要执行
6、HIVE安装
hive只安装在hadoop-master节点上就可以了
1、 先安装MySQL5.7
sudo yum remove mysql
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
sudo yum install mysql-server
sudo chown -R hadoop:hadoop /var/lib/mysql
mysql -u root
第一次不用密码
use mysql;
开启远程访问权限:grant all privileges on *.* to root@'%' identified by "root";
FLUSH PRIVILEGES ;
create database hivedb;
exit;
上传hive的tar包:
tar -xf apache-hive-1.2.2-bin.tar.gz
cd hive-1.2.2/conf
mv hive-env.sh.template hive-env.sh
vim hive-env.sh
添加下面3条数据:
export HADOOP_HOME=/home/hadoop/hadoop-2.7.5
export HIVE_CONF_DIR=home/hadoop/hive-1.2.2/conf
export JAVA_HOME=/home/hadoop/jdk1.8.0_144
mv hive-log4j.properties.template hive-log4j.properties
vim hive-log4j.properties
hive.log.dir=/home/zkpk/hive-1.2.2/logs
# 创建日志目录
mkdir /home/zkpk/hive-1.2.2/logs
vim hive-site.xml
删除所有内容,添加如下内容:
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://ns1/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://ns1/hive/scratchdir</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/home/hadoop/hive-1.2.2/logs</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.56.101:3306/hivedb?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
</configuration>
设置环境变量:
vim /etc/profile
export HIVE_HOME=/home/hadoop/hive-1.2.2
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile
在hive-1.2.2/lib下有个jline的jar,将hadoop原来的那个jar包换成一致的,否则会启动hive会报错。
cp hive-1.2.1/lib/jline-2.12.jar /home/hadoop/hadoop-2.7.5/share/hadoop/yarn/lib
将mysql-connector-java-5.1.46.jar连接jar拷贝到hive-1.2.1/lib目录下
cp mysql-connector-java-5.1.46.jar ~/hive-1.2.2/lib/
# 运行下面命令
启动HIVE命令:hive
http://192.168.56.101:50070,查看是否多了hive目录。
退出hive的客户端接口: quit
7、flume安装
flume这个可以设置环境变量也可以不设置看自己! 我没设置flume的环境变量
tar zxvf apache-flume-1.8.0-bin.tar.gz
cd apache-flume-1.8.0-bin/conf/
cp flume-env.sh.template flume-env.sh
vi flume-env.sh
添加:
JAVA_HOME=/home/hadoop/jdk1.8.0_144
在conf目录下:
vi netcat-logger.conf
# 定义这个agent中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# 描述和配置source组件:r1
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
# 描述和配置sink组件:k1
a1.sinks.k1.type = logger
# 描述和配置channel组件,此处使用是内存缓存的方式
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# 描述和配置source channel sink之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
2、启动agent去采集数据
bin/flume-ng agent -c conf -f conf/netcat-logger.conf -n a1 -Dflume.root.logger=INFO,console
按ctrl+c停止
-c conf 指定flume自身的配置文件所在目录
-f conf/netcat-logger.con 指定我们所描述的采集方案
-n a1 指定我们这个agent的名字
3、测试
先要往agent采集监听的端口上发送数据,让agent有数据可采
随便在一个能跟agent节点联网的机器上
yum install telnet
telnet anget-hostname port (telnet localhost 44444)
发送数据 flume能接受到 安装成功!
8.azkaban安装
上传tar包到家目录
Azkaban Web服务器
azkaban-web-server-2.5.0.tar.gz
Azkaban执行服务器
azkaban-executor-server-2.5.0.tar.gz
azkaban-sql-script-2.5.0.tar.gz
中共3个tar包
将安装文件上传到集群,最好上传到安装 hive、sqoop的机器上,方便命令的执行
mkdir azkaban-2.5.0
tar zxvf azkaban-web-server-2.5.0.tar.gz -C azkaban-2.5.0/server
tar zxvf azkaban-executor-server-2.5.0.tar.gz -C azkaban-2.5.0/executor
tar zxvf azkaban-sql-script-2.5.0.tar.gz -C azkaban-2.5.0/
azkaban脚本导入:
mysql -uroot -p
root
create database azkaban;
use azkaban;
source /home/hadoop/azkaban-2.5.0/azkaban-2.5.0//create-all-sql-2.5.0.sql;
创建SSL配置:
cd ~
命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
运行此命令后,会提示输入当前生成 keystor的密码及相应信息,输入的密码请劳记,信息如下:
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的州或省份名称是什么?
[Unknown]:
该单位的两字母国家代码是什么
[Unknown]: CN
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正确吗?
[否]: y
输入<jetty>的主密码
(如果和 keystore 密码相同,按回车):
再次输入新密码:
完成上述工作后,将在当前目录生成 keystore 证书文件,将keystore 考贝到 azkaban web服务器根目录中
cp keystore azkaban-2.5.0/server
配置文件:
如果服务器默认的是Asia/Shanghai时区, 此项可以不配
注:先配置好服务器节点上的时区
1、先生成时区配置文件Asia/Shanghai,用交互式命令 tzselect 即可
2、拷贝该时区文件,覆盖系统本地时区配置
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cd azkaban-2.5.0/server/conf
vi azkaban.properties
内容说明如下: ***可以修改
#Azkaban Personalization Settings
azkaban.name=Test #服务器UI名称,用于服务器上方显示的名字
azkaban.label=My Local Azkaban #描述
azkaban.color=#FF3601 #UI颜色
azkaban.default.servlet.path=/index #
web.resource.dir=/home/hadoop/azkaban-2.5.0/server/web/ #默认根web目录
default.timezone.id=Asia/Shanghai #默认时区,已改为亚洲/上海 默认为美国 ***
#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/home/hadoop/azkaban-2.5.0/server/conf/azkaban-users.xml ***
#Loader for projects
executor.global.properties=/home/hadoop/azkaban-2.5.0/server/cconf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=/home/hadoop/azkaban-2.5.0/keystore
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=/home/hadoop/azkaban-2.5.0/keystore
jetty.trustpassword=123456
# Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=
mail.host=
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
vi azkaban-users.xml
<azkaban-users>
<user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
<user username="metrics" password="metrics" roles="metrics"/>
<user username="admin" password="admin" roles="admin,metrics" />
<role name="admin" permissions="ADMIN" />
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
cd ../../executor/conf/
vi azkaban.properties
#Azkaban
default.timezone.id=Asia/Shanghai
# Azkaban JobTypes Plugins
azkaban.jobtype.plugin.dir=/home/hadoop/azkaban-2.5.0/executor/plugins/jobtypes
#Loader for projects
executor.global.properties=/home/hadoop/azkaban-2.5.0/executor/conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
启动:
web服务器:
在azkaban web服务器目录下执行启动命令
bin/azkaban-web-start.sh
启动到后台
nohup bin/azkaban-web-start.sh 1>/tmp/azstd.out 2>/tmp/azerr.out &
执行服务器:
在执行服务器目录下执行启动命令
bin/azkaban-executor-start.sh
启动完成后,在浏览器(建议使用谷歌浏览器)中输入https://服务器IP地址:8443 ,即可访问azkaban服务了.在登录中输入刚才新的户用名及密码,点击 login
停止:
bin/azkaban-web-stop.sh
bin/azkaban-executor-stop.sh
9、sqoop安装
只需要在hadoop-master安装就可以了
tar zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
cp mysql-connector-java-5.1.29.jar sqoop-1.4.7.bin__hadoop-2.6.0/lib/
cd /home/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0/conf
mv sqoop-env-template.sh sqoop-env.sh
vim sqoop-env.sh
修改如下:
export HADOOP_COMMON_HOME=/home/hadoop/hadoop-2.7.5/
export HADOOP_MAPRED_HOME=/home/hadoop/hadoop-2.7.5/
export HIVE_HOME=/home/hadoop/hive-1.2.2/
hbase这个可以现在用修改 现在还没安装hbase
export HBASE_HOME=/home/hadoop/hbase-1.2.2
修改环境变量:
vim /etc/profile
# 增加
export SQOOP_HOME=/home/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0
export PATH=$PATH:$SQOOP_HOME/bin
source /etc/profile
验证启动:
cd $SQOOP_HOME/bin
$ sqoop version
15/12/17 14:52:32 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
Sqoop 1.4.6 git commit id 5b34accaca7de251fc91161733f906af2eddbe83
Compiled by abe on Fri Aug 1 11:19:26 PDT 2015
到这里,整个Sqoop安装工作完成。
10、hbase集群安装
tar zxvf hbase-1.2.6-bin.tar.gz
进行配置:
cd hbase-1.2.6/lib
cp ~/hadoop-2.7.5/share/hadoop/mapreduce/lib/hadoop-annotations-2.7.5.jar .
cp ~/hadoop-2.7.5/share/hadoop/tools/lib/hadoop-auth-2.7.5.jar .
cp ~/hadoop-2.7.5/share/hadoop/common/hadoop-common-2.7.5.jar .
cp ~/hadoop-2.7.5/share/hadoop/hdfs/hadoop-hdfs-2.7.5.jar .
cp ~/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-app-2.7.5.jar .
cp ~/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-common-2.7.5.jar .
cp ~/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7.5.jar .
cp ~/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5 .
cp ~/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5.jar .
cp ~/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-shuffle-2.7.5.jar .
cp ~/hadoop-2.7.5/share/hadoop/yarn/hadoop-yarn-api-2.7.5.jar .
cp ~/hadoop-2.7.5/share/hadoop/yarn/hadoop-yarn-client-2.7.5.jar .
cp ~/hadoop-2.7.5/share/hadoop/yarn/hadoop-yarn-common-2.7.5.jar .
cp ~/hadoop-2.7.5/share/hadoop/yarn/hadoop-yarn-server-common-2.7.5.jar .
# 解决java.lang.NoClassDefFoundError: org/htrace/Trace
cp ~/hadoop-2.7.5/share/hadoop/common/lib/htrace-core-3.1.0-incubating.jar
# 删除老版的jar
rm *-2.5.1.jar
vim hbase-env.sh
export JAVA_HOME=/home/hadoop/jdk1.8.0_144
export HBASE_MANAGES_ZK=false
export HBASE_CLASSPATH=/home/hadoop/hadoop-2.7.5/etc/hadoop
# 注释掉下面的配置(因为1.8JDK没有这个选项)
#export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
#export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
vim hbase-site.xml
<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/home/hadoop/hbase-1.2.6/tmp</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://ns1/hbase</value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>120000</value>
</property>
<property>
<name>hbase.zookeeper.property.tickTime</name>
<value>6000</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop-master,hadoop-node1,hadoop-node2</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/zookeeper-3.4.10/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
</property>
</configuration>
vim regionservers
添加: hadoop-node1 hadoop-node2
拷贝hbase到其他节点:
cd hbase-1.2.6/conf
cp ~/hadoop-2.7.5/etc/hadoop/hdfs-site.xml .
cp ~/hadoop-2.7.5/etc/hadoop/core-site.xml .
scp -r /home/hadoop/hbase-1.2.6 hadoop-node1:~/
scp -r /home/hadoop/hbase-1.2.6 hadoop-node2:~/
在其他节点source /etc/profile
配置环境变量:
sudo vim /etc/profile
export HBASE_HOME=/home/hadoop/hbase-1.2.6
export PATH=$PATH:$HBASE_HOME/bin
source /etc/profile
在其余2台机器上都要执行
启动验证:
在启动之前需要讲zookeeper集群和Hadoop集群启动起来
# 启动 只需要在hadoop-master上就可以了
start-hbase.sh
使用命令查看:jps 有HMaster进程
# 通过浏览器访问hbase HMaster Web页面
http://hadoop-master:16010
# HRegionServer Web页面
http://hadoop-node1:16030 有HRegionServer进程
http://hadoop-node2:16030
# shell验证
hbase shell
# list验证
list
# 建表验证
create 'user','name','sex'
停止:
stop-hbase.sh
11、storm集群安装
前提条件:ZooKeeper、JDK、Python2.6.6(安装操作系统时已安装)
tar zxvf apache-storm-1.2.1.tar.gz
cd apache-storm-1.2.1
mkdir data
配置环境变量:
vim /etc/profile
export STORM_HOME=/home/hadoop/apache-storm-1.2.1
export PATH=$PATH:$STORM_HOME/bin
source /etc/profile
cd conf
vim sotrm.yaml 添加:
storm.zookeeper.servers:
- "hadoop-node1"
- "hadoop-node2"
nimbus.host: "hadoop-master"
storm.local.dir: "/home/hadoop/apache-storm-1.2.1/data"
复制Storm到其他节点:
scp -r apache-storm-1.2.1 hadoop@hadoop-node1:/home/hadoop
scp -r apache-storm-1.2.1 hadoop@hadoop-node2:/home/hadoop
在其他节点上也进行环境变量的配置
启动:
# hadoop-master节点
storm nimbus > /dev/null 2>&1 &
storm ui > /dev/null 2>&1 &
# hadoop-node1 和 node2 节点
storm supervisor > /dev/null 2>&1 &
验证:
# 参看storm ui
http://hadoop-master:8080/index.html
关闭:
[zkpk@hsm01 ~]$ jps
5505 nimbus
5635 Jps
2710 QuorumPeerMain
[zkpk@hsm01 ~]$ kill 5505
# 关闭nimbus相关进程:
kill `ps aux | egrep '(daemon\.nimbus)|(storm\.ui\.core)' |fgrep -v egrep | awk '{print $2}'`
# 干掉supervisor上的所有storm进程:
kill `ps aux | fgrep storm | fgrep -v 'fgrep' | awk '{print$2}'`
添加启动关闭脚本:在storm目录下
vim conf/slaves
hadoop-node1
hadoop-node2
start-storm.sh
#!/usr/bin/env bash
# Start all storm daemons
# Run this on master node
# Starts a worker on each node specified in conf/slaves
if [ -z "${STORM_HOME}" ]; then
export STORM_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi
SLAVE_FILE=${STORM_HOME}/conf/slaves
SLAVE_NAMES=$(cat "$SLAVE_FILE" | sed 's/#.*$//;/^$/d')
"${STORM_HOME}/bin"/storm nimbus > /dev/null 2>&1 &
echo start nimbus [ done ]
sleep 1
"${STORM_HOME}/bin"/storm ui > /dev/null 2>&1 &
echo start ui [ done ]
sleep 1
for slave in $SLAVE_NAMES ;
do
ssh -T $slave <<EOF
source ~/.bash_profile
cd \$STORM_HOME
python bin/storm supervisor >/dev/null 2>&1 &
EOF
echo start $slave supervisor [ done ]
sleep 1
done
echo start storm [ done ]
stop-storm.sh
#!/usr/bin/env bash
# Stop all storm daemons
# Run this on master node
# Stops a worker on each node specified in conf/slaves
if [ -z "${STORM_HOME}" ]; then
export STORM_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi
kill `ps aux | egrep '(daemon\.nimbus)|(storm\.ui\.core)' |fgrep -v egrep | awk '{print $2}'`
echo stop nimbus [ done ]
sleep 1
SLAVE_FILE=${STORM_HOME}/conf/slaves
SLAVE_NAMES=$(cat "$SLAVE_FILE" | sed 's/#.*$//;/^$/d')
for slave in $SLAVE_NAMES ;
do
ssh $slave '/bin/kill `ps -ef | grep storm | grep -v grep | awk '\'{print \$2}\''`'
echo stop $slave supervisor [ done ]
sleep 1
done
echo stop storm [ done ]
就可以在家目录下 启动和关闭
12、kafaka集群安装
tar -xf kafka_2.11-1.1.0.tgz
cd kafka_2.11-1.1.0/config
修改配置文件
vim server.properties
broker.id=0
listeners=PLAINTEXT://192.168.56.101:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
zookeeper.connect=192.168.56.101:2181,192.168.56.102:2181,192.168.56.103:2181
zookeeper.connection.timeout.ms=6000
复制文件到各个节点上:
scp -r kafka_2.11-1.1.0 hadoop@hadoop-node1:/home/hadoop
scp -r kafka_2.11-1.1.0 hadoop@hadoop-node2:/home/hadoop
在各个节点上配置环境变量
vim /etc/profile
export KAFKA_HOME=/home/hadoop/kafka_2.11-1.1.0
export PATH=$PATH:$KAFKA_HOME/bin
source /etc/profile
在hadoop-node1 上修改
broker.id=1
listeners=PLAINTEXT://192.168.56.102:9092
在hadoop-node2上修改
broker.id=2
listeners=PLAINTEXT://192.168.56.103:9092
启动:
依次在各节点上启动kafka
bin/kafka-server-start.sh config/server.properties
停止:
依次在各节点上停止kafka
bin/kafka-server-stop.sh
13、scala安装
tar zxf scala-2.12.5.tgz
配置环境变量
vim /etc/profile
export SCALA_HOME=/home/hadoop/scala-2.12.5
export PATH=$PATH:$SCALA_HOME/bin
source vim /etc/profile
复制到其他节点上:
scp -r scala-2.12.5 hadoop@hadoop-node1:/home/hadoop
scp -r scala-2.12.5 hadoop@hadoop-node2:/home/hadoop
同样进行环境变量的配置
输入命令: scala -version
安装完成
14、spark集群安装
tar -xf spark-2.3.0-bin-hadoop2.7.tgz
cd spark-2.3.0-bin-hadoop2.7/conf
进行配置:
vim spark-env.sh 添加:
export JAVA_HOME=/home/hadoop/jdk1.8.0_144
export SCALA_HOME=/home/hadoop/scala-2.12.5
export SPARK_MASTER_IP=hadoop-master
export SPARK_WORKER_MEMORY=300m
export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.7.5/etc/hadoop
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"
cp slaves.template slaves
vim slaves
hadoop-master
hadoop-node1
hadoop-node2
复制到其他节点:
scp -r spark-2.3.0-bin-hadoop2.7 hadoop@hadoop-node1:/home/hadoop
scp -r spark-2.3.0-bin-hadoop2.7 hadoop@hadoop-node2:/home/hadoop
在每台机器上进行环境变量的配置:
vim /etc/profile
export SPARK_HOME=/home/hadoop/spark-2.3.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin
source etc/profile
启动验证:
# 启动(由于和hadoop的启动shell名字一样,需要注意)
$SPARK_HOME/sbin/start-all.sh
# 查看集群状态
http://hadoop-master:8080/
# 命令行交互验证
./bin/spark-shell
停止:
$SPARK_HOME/sbin/stop-all.sh
需要注意: storm和spark都要需要比较大的内存 所以虚拟机分配内存可以大点
15、redis集群搭建
集群中应该至少有三个节点,每个节点有一备份节点。需要6台服务器。
搭建伪分布式,需要6个redis实例。
搭建集群的步骤:
第一步:创建6个redis实例指定端口从7001到7006 在redis.conf文件中修改
第二步:修改redis.conf 打开Cluster-enable yes前面的注释
第三步:需要一个ruby脚本。在redis源码文件夹下的src目录下。redis-trib.rb
第四步:把redis-trib.rb文件复制到到redis-cluster目录下
第五步:执行ruby脚本之前,需要安装ruby环境
1、yum install ruby
2、yum install rubygems
3、安装redis-trib.rb运行依赖的ruby的包、自行下载redis-3.0.0.gem
gem install redis-3.0.0.gem
第六步:启动所有的redis实例
第七步:使用redis-trib.rb创建集群。
填写自己主机的IP地址
./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006
使用客户端连接集群: redis01/redis-cli -p 7001 -c