本文是在自己工作中用到各个组件的安装方式的记录,包括:hadoop,hbase,kafka,es,hive,flume,druid,flink,spark等,在持续更新中。具体的使用记录另有博文具体介绍。
# 增加用户,并赋予其密码
$ adduser hadoop
$ passwd hadoop # ur password for eagle user
# 赋予用户root权限
$ chmod u+w /etc/sudoers
$ vim /etc/sudoers
# 找到 `root ALL=(ALL) ALL`这行,并在下面添加hadoop用户
hadoop ALL=(ALL) ALL
$ chmod u-w /etc/sudoers
# 切换到 hadoop用户
$ su - hadoop
$ cd /home/hadoop
# 存放软件目录 & 安装目录 & 日志目录
$ mkdir install && mkdir software && mkdir logs
##修改用户名
$ vim /etc/hostname
//三个节点分别叫bigdata-01,bigdata-02,bigdata-03. 然后重启节点。
##安装jdk参考博文[ZOOKEEPER安装及测试](https://my.oschina.net/112612/blog/1584832 "ZOOKEEPER安装及测试")
## ssh免密登陆参见博文[免密登陆脚本(shell版)](https://my.oschina.net/112612/blog/1560133 "免密登陆脚本(shell版)")
$ cd /home/hadoop/install/
$ wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.8.4/hadoop-2.8.4.tar.gz
$ tar zxvf hadoop-2.8.4.tar.gz -C ~/software/
$ cd ~/software/
$ ln -s hadoop-2.8.4/ hadoop
$ cd hadoop/
$ bin/hadoop version
Hadoop 2.8.4
配置
$ vim ~/.bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
# Hadoop Environment Variables
export HADOOP_HOME=~/software/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export JAVA_HOME=~/software/java
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$JAVA_HOME/bin
$ source ~/.bashrc
一共涉及以下几个文件
~/hadoop-2.8.4/etc/hadoop/hadoop-env.sh
~/hadoop-2.8.4/etc/hadoop/yarn-env.sh
~/hadoop-2.8.4/etc/hadoop/slaves
~/hadoop-2.8.4/etc/hadoop/core-site.xml
~/hadoop-2.8.4/etc/hadoop/hdfs-site.xml
~/hadoop-2.8.4/etc/hadoop/mapred-site.xml
~/hadoop-2.8.4/etc/hadoop/yarn-site.xml
#以上文件默认不存在的,可以复制相应的template文件获得
在修改之前,首先新建3个文件夹
$ cd /home/hadoop/software/
mkdir -p /data/tmp
mkdir -p /data/dfs/namenode
mkdir -p /data/dfs/datanode
修改JAVA_HOME值(export JAVA_HOME=/home/software/java)
修改JAVA_HOME值(export JAVA_HOME=/home/software/java)
bigdata-02
bigdata-03
hadoop.tmp.dir
file:/home/hadoop/software/hadoop/data/tmp
Abase for other temporary directories.
fs.defaultFS
hdfs://bigdata-01:9000
io.file.buffer.size
131072
dfs.replication
3
dfs.namenode.name.dir
file:/home/hadoop/software/data/dfs/namenode
dfs.datanode.data.dir
file:/home/hadoop/software/data/dfs/datanode
dfs.webhdfs.enabled
true
dfs.namenode.secondary.http-address
bigdata-01:9001
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
bigdata-01:10020
mapreduce.jobhistory.webapp.address
bigdata-01:19888
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
bigdata-01:8032
yarn.resourcemanager.scheduler.address
bigdata-01:8030
yarn.resourcemanager.resource-tracker.address
bigdata-01:8031
yarn.resourcemanager.admin.address
bigdata-01:8033
yarn.resourcemanager.webapp.address
bigdata-01:8088
$ mkdir -p /home/hadoop/logs/hadoop-hdfs/
$ vim ~/software/hadoop/etc/hadoop/log4j.properties
# log4j.appender.RFAAUDIT.File=${hadoop.log.dir}/hdfs-audit.log
log4j.appender.RFAAUDIT.File=/home/hadoop/logs/hadoop-hdfs/hdfs-audit.log
将以上操作的文件复制到另外两个节点上。
然后在bigdata-01上执行格式化并启动hadoop
$ bin/hdfs namenode -format
cd ../sbin;./start-dfs.sh
bigdata-01(master)出现以下现象则成功启动
[hadoop@lihao ~]$ jps
2324 NameNode
2839 Jps
2601 SecondaryNameNode
slave上则只有datanode进程。
start-yarn.sh
最后在浏览器中输入:http://ip:50070,如果出现hadoop界面则安装成功,如果jps没有问题,而界面没有出现,则检查防火墙。
由于只有一台服务器,故只能搭建伪分布式集群。由于搭建hbase必须有zk和jdk,故也顺道搭建了zk的伪分布集群。
cp conf/zoo_sample.cfg conf/zoo1.cfg
vim zoo1.cfg
dataDir=/home/hadoop/software/zookeeper/zoo1/data
clientPort=2181
#增加1
server.1=lihao:2888:3888
server.2=lihao:2889:3889
server.3=lihao:2890:3890
cp conf/zoo_sample.cfg conf/zoo2.cfg
vim zoo1.cfg
dataDir=/home/hadoop/software/zookeeper/zoo2/data
clientPort=2182
#增加2
server.1=lihao:2888:3888
server.2=lihao:2889:3889
server.3=lihao:2890:3890
cp conf/zoo_sample.cfg conf/zoo3.cfg
vim zoo1.cfg
dataDir=/home/hadoop/software/zookeeper/zoo3/data
clientPort=2183
#增加
server.1=lihao:2888:3888
server.2=lihao:2889:3889
server.3=lihao:2890:3890
然后执行
mkdir -p ..../zookeeper/zoo1/data
mkdir -p ..../zookeeper/zoo2/data
mkdir -p ..../zookeeper/zoo3/data
echo '1'>zoo1/data/myid
echo '2'>zoo1/data/myid
echo '3'>zoo1/data/myid
然后启动三个节点
bin/zkServer.sh start conf/zoo1.cfg
bin/zkServer.sh start conf/zoo2.cfg
bin/zkServer.sh start conf/zoo3.cfg
最后检查每个节点的状态:
bin/zkServer.sh status conf/zooX.cfg
下载链接
修改conf/hbase-env.sh
export JAVA_HOME=JDK_PATH
export HBASE_CLASSPATH=/home/hadoop/software/hbase/conf
export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
export HBASE_MANAGES_ZK=true [如果你是使用hbase自带的zk就是true,如果使用自己的zk就是false]
修改conf/hbase-site.xml
hbase.master
A:60000
hbase.master.maxclockskew #时间同步允许的时间差
180000
hbase.rootdir
hdfs://A:9000/hbase #hbase共享目录,持久化hbase数据
hbase.cluster.distributed #是否分布式运行,false即为单机
true
hbase.zookeeper.quorum #zookeeper地址
A,B,C
hbase.zookeeper.property.dataDir #zookeeper配置信息快照的位置
/data/hbase/tmp
然后将hadoop的core-site.xml和hdfs-site.xml也复制到该文件夹下。
修改环境变量
$ vim ~/.bash_profile
export HBASE_HOME=/home/hadoop/software/hbase
export PATH=$HBASE_HOME/bin:$PATH
# 使配置生效
$ source /etc/profile
将修改后的hbase安装包复制到另外两台上去。
scp -r hbase/ B:/home/hadoop/software/
scp -r hbase/ C:/home/hadoop/software/
然后在B/C上做相同操作。
最后在master节点上启动hbase
start-hbase.sh
然后jps查看进程
6788 HRegionServer
4133 SecondaryNameNode
7768 Jps
3672 QuorumPeerMain
3417 QuorumPeerMain
3865 NameNode
3626 QuorumPeerMain
7386 HMaster
3965 DataNode
最后页面操作显示:http:A:16010
参见博文ES基础操作
tar -zxvf kafka_2.10-0.8.2.2.tgz
ln -s kafka_2.10-0.8.2.2 kafka
cd kafka/config
vim server..properties
######
broker.id=0 #当前机器在集群中的唯一标识,和zookeeper的myid性质一样,另外两台可分别为1,2
port=9092 #当前kafka对外提供服务的端口默认是9092
num.network.threads=3 #这个是borker进行网络处理的线程数
num.io.threads=8 #这个是borker进行I/O处理的线程数
log.dirs=/opt/kafka/kafkalogs/ #消息存放的目录,这个目录可以配置为“,”逗号分割的表达式,上面的num.io.threads要大于这个目录的个数这个目录,如果配置多个目录,新创建的topic他把消息持久化的地方是,当前以逗号分割的目录中,那个分区数最少就放那一个
socket.send.buffer.bytes=102400 #发送缓冲区buffer大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能
socket.receive.buffer.bytes=102400 #kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘
socket.request.max.bytes=104857600 #这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小
num.partitions=1 #默认的分区数,一个topic默认1个分区数
log.retention.hours=168 #默认消息的最大持久化时间,168小时,7天
message.max.byte=5242880 #消息保存的最大值5M
default.replication.factor=2 #kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务
replica.fetch.max.bytes=5242880 #取消息的最大直接数
log.segment.bytes=1073741824 #这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件
log.retention.check.interval.ms=300000 #每隔300000毫秒去检查上面配置的log失效时间(log.retention.hours=168 ),到目录查看是否有过期的消息如果有,删除
log.cleaner.enable=false #是否启用log压缩,一般不用启用,启用的话可以提高性能
zookeeper.connect=a:2181,b:2181,c2181 #设置zookeeper的连接端口
#####
先启动zk,然后启动kafka
./bin/kafka-server-start.sh -daemon ./config/server.properties &
然后集群的验证等步骤参看博文
将元数据保存在本地内嵌的 Derby 数据库中,这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显,因为一个内嵌的 Derby 数据库每次只能访问一个数据文件,这也就意味着它不支持多会话连接。
2. 本地模式
这种模式是将元数据保存在本地独立的数据库中(一般是 MySQL),这用就可以支持多会话和多用户连接了。
此模式应用于 Hive 客户端较多的情况。把 MySQL 数据库独立出来,将元数据保存在远端独立的 MySQL 服务中,避免了在每个客户端都安装 MySQL 服务从而造成冗余浪费的情况。
http://hive.apache.org/downloads.html
修改 /etc/profile或者~/.bashrc 文件,使用 vim /etc/profile 或者vim ~/.bashrc来修改:
# Hive environment
export HIVE_HOME=/usr/local/hadoop/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH
(1)修改 Hive 配置文件:hive-env.sh和hive-site.xml
hive-env.sh
export HADOOP_HEAPSIZE=1024
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/usr/local/hadoop
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/usr/local/hadoop/hive/conf
# Folder containing extra ibraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=/usr/local/hadoop/hive/lib
hive-site.xml
hive.metastore.warehouse.dir
该参数指定了 Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下。
hive.exec.scratchdir
该参数指定了 Hive 的数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下。
(2)创建必要目录
前面我们看到 hive-site.xml 文件中有两个重要的路径,切换到 hadoop 用户下查看 HDFS 是否有这些路径:
$ hadoop dfs -ls /
没有发现上面提到的路径,因此我们需要自己新建这些目录,并且给它们赋予用户写(W)权限。
$ hadoop dfs -mkdir /user/hive/warehouse
$ hadoop dfs -mkdir /tmp/hive
$ hadoop dfs -chmod 777 /user/hive/warehouse
$ hadoop dfs -chmod 777 /tmp/hive
(3)修改 io.tmpdir 路径
同时,要修改 hive-site.xml 中所有包含 ${system:java.io.tmpdir} 字段的 value 即路径,你可以自己新建一个目录来替换它,例如 /home/hive/iotmp .
mkdir /home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp
chmod 777 /home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp
最后再将
hive.exec.local.scratchdir
/home/lch/software/Hive/apache-hive-2.1.1-bin/tmp/${system:user.name}
Local scratch space for Hive jobs
中的${system:user.name}修改如下:
hive.exec.local.scratchdir
/home/lch/software/Hive/apache-hive-2.1.1-bin/tmp/${user.name}
Local scratch space for Hive jobs
(4) 初始化
./schematool -initSchema -dbType derby
nohup ./hive --service metastore &
nohup ./hive --service hiveserver2 &
运行 Hive
./hive
前面我们已经提到过,内嵌模式使用默认配置和 Derby 数据库,所以无需其它特别修改,先 ./start-all.sh 启动 Hadoop, 然后直接运行 hive:
通过hiveServer/hiveServer2启动Thrift服务,客户端连接Thrift服务访问Hive数据库(JDBC,JAVA等连接Thrift服务访问Hive)。
hive.server2.thrift.port
Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.
hive.server2.thrift.bind.host
127.0.0.1
Bind host on which to run the HiveServer2 Thrift service.
hive.server2.enable.doAs
false
Setting this property to true will have HiveServer2 execute
Hive operations as the user making the calls to it.
如果为True:Hive Server会以提交用户的身份去执行语句
如果为False:会以hive server daemon的admin user来执行语句
启动Thrift服务:hive --service hiveserver2
测试Thrift服务:
新开一个命令行窗口,执行beeline命令:
./beeline
1 若是内嵌模式则:
If hive.server2.authentication is "NONE" in HIVE_HOME/conf/hive-site.xml then connect beeline with below url
Connection URL:
!connect jdbc:hive2://
2 Remote Mode:
i.)SASL Authentication:
If value of "hive.server2.authentication" property in HIVE_HOME/conf/hive-site.xml to be set as "SASL" then connect hive beeline with below url
Beeline URL:
!connect jdbc:hive2://:/
ii.)NOSASL Authentication:
If "hive.server2.authentication" is nosasl then connect the beeline like below.
Beeline URL:
!connect jdbc:hive2://:/;auth =noSasl
yum install mysql-server
安装完成后:
service mysqld start
mysql
若不报错则执行下命令:
use mysql;
update user set password=PASSWORD(“hadoop”)where user=”root”;
flush privileges;
quit
service mysqld restart
mysql -u root -p
password:hadoop
到此测表示mysql已经安装成功。
接下来创建用户:
创建Hive元数据库:
mysql>create database hive;
alter database hive character set latin1;
mysql>grant all privileges on hive.* to 'hive'@'%' identified by 'hive';
mysql>flush privileges;
hive安装的前提是hadoop已经安装完毕。且需要在hdfs上新建/user/hive/metahouse/和/tmp/hive文件夹,并赋予777权限:
hdfs dfs -mkdir /user/hive/metahouse(只能一级一级的建)
hdfs dfs -mkdir /tmp/hive
hdfs dfs -chmod 777 /user/hive/warehouse
hdfs dfs -chmod 777 /tmp/hive
hive.metastore.warehouse.dir
该参数指定了 Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下。
hive.exec.scratchdir
该参数指定了 Hive 的数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下。
tar -zxvf apache-hive-2.2.0-bin.tar.gz -C /home/connect/software
ln -s apache-hive-2.2.0-bin hive
然后设置环境变量:
vim ~/.bashrc
export HIVE_HOME=/home/connect/software/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH
source ~/.bashrc
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
a.修改hive-site.xml
javax.jdo.option.ConnectionURL
jdbc:mysql://10.37.167.203:3306/hive_metastore?characterEncoding=UTF-8
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
root
javax.jdo.option.ConnectionPassword
hadoop
/home/connect/hive/bin/iotmp
chmod 777 /home/connect/hive/bin/iotmp
把hive-site.xml 中所有包含 ${system:Java.io.tmpdir}替换成/home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp
将mySql的JDBC驱动包复制到Hive的lib目录下
cp mysql-connector-java.bin.jar /home/connect/hive/lib
6、分发Hive分别到slave1,slave2,slave3上
scp -r /usr/local/hadoop/apache-hive-1.2.1-bin slave1:/usr/local/hadoop/
scp -r /usr/local/hadoop/apache-hive-1.2.1-bin slave2:/usr/local/hadoop/
scp -r /usr/local/hadoop/apache-hive-1.2.1-bin slave3:/usr/local/hadoop/
环境变量等如同master
7、测试Hive
进入到Hive的安装目录,命令行:
cd /usr/local/hadoop/apache-hive-1.2.1-bin/bin
hive
hive>show tables;
正常显示,即是安装配置成功。
初始化
schematool -dbType mysql -initSchema
https://www.cnblogs.com/tq03/p/5107949.html
https://www.cnblogs.com/netuml/p/7841387.html
http://www.cnblogs.com/zlslch/p/6025410.html
https://www.cnblogs.com/yaohaitao/p/6588922.html
参见博文spark安装测试
flume安装使用特别简单,新建用户赋权,然后下载安装包。flume-1.7
未完,待续。。。