Hadoop--快速搭建大数据开发环境
背景
最近自己电脑的磁盘坏了,导致数据也没了。安装好系统之后就是各种弄环境了,之前的博客也写过Hadoop环境搭建 Hadoop
,Hive
,HBase
,Kafka
,Spark
,MySQL
,Redis
等等一系列的。
之前记录的目的也是为了方便自己吧,但整个流程下来还是的花费几个小时。从前面的博客找到从虚拟机的网络配置,下载软件上传在修改配置挺麻烦的。这里再次做个汇总,以后做这个过程或者升级就更加方便(主要便捷是后面会给出一个Virtual Box的包直接导入就有这些所有环境了)。
准备
- 软件下载(可以通过该链接自己下载,同时我在附录中也提供了百度云下载地址)
- https://www.virtualbox.org/wiki/Downloads virtual box 使用了5.0.40版本
- http://vault.centos.org/6.5/isos/x86_64/ box 使用CentOS-6.5-x86_64-minimal.iso
- http://archive.apache.org/dist/hadoop/common 使用 hadoop-2.7.2
- http://archive.apache.org/dist/hbase/ 使用 hbase-1.3.1-bin.tar.gz
- http://archive.apache.org/dist/hive/ 使用apache-hive-1.2.1-bin.tar.gz
- http://archive.apache.org/dist/kafka/ 使用 kafka_2.11-0.11.0.0.tgz
- http://archive.apache.org/dist/zookeeper/ 使用 zookeeper-3.4.9.tar.gz
- http://archive.apache.org/dist/spark/ 使用 spark-2.0.0-bin-hadoop2.7.tgz
- http://www.oracle.com/technetwork/java/javase/downloads/index.html 使用 jdk-8u144-linux-x64.tar.gz
- https://redis.io/download 使用 redis-3.0.6.tar.gz
- https://dev.mysql.com/downloads/mysql/5.5.html?os=31&version=5.1 使用 mysql-5.7.9-1.el6.x86_64.rpm-bundle.tar
安装linux
- 安装virtual box(略,这个没什么好说的,一直下一步就ok!)
- 安装Linux虚拟机注意(选择第一个)
- 添加虚拟机后网络配置
环境准备
- 规划
- 创建一个data目录所有东西都放在那儿:mkdir /data
- 再在data目录下创建一个data目录用来保存一些数据,比如hdfs,kafka等:mkdir /data/data
上传软件
准备
关闭防火墙:
1
2[root@xiaoxiaomo ~]# service iptables stop
[root@xiaoxiaomo ~]# chkconfig --list | grep iptables修改主机名:修改
1
2
3[root@xiaoxiaomo ~]# vi /etc/sysconfig/network
# 修改为:
HOSTNAME=xiaoxiaomo绑定hosts Name:
1
2
3[root@xiaoxiaomo ~]# vi /etc/hosts
# 添加
192.168.56.102 xiaoxiaomo设置ssh:
1
2
3[root@xiaoxiaomo ~]# ssh-keygen -t rsa #生成rsa格式的ssh私钥和公钥
[root@xiaoxiaomo ~]# ssh-copy-id -i xiaoxiaomo #把公钥复制到对方节点(这里我复制到自己的主机xiaoxiaomo01上)
[root@xiaoxiaomo ~]# ssh xiaoxiaomo01 #验证安装国内的yum镜像
参考:
http://blog.xiaoxiaomo.com/2016/02/11/Linux-Yum%E6%BA%90%E7%A0%81%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE/- 安装JDK 参考,这里我们安装jdk1.8:
1
2
3
4
5
6
7#解压到/data && 修改名称
[root@xiaoxiaomo ~]# tar -zxvf /opt/jdk-8u144-linux-x64.tar.gz -C /data
[root@xiaoxiaomo ~]# mv /data/jdk1.8.0_144/ /data/jdk
#配置环境变量
[root@xiaoxiaomo ~]# vi /etc/profile
export JAVA_HOME=/data/jdk
export PATH=.:$JAVA_HOME/bin:$PATH
安装Hadoop
解压&&重命名&&配置环境变量
1
2
3
4
5
6
7
8[root@xiaoxiaomo ~]# tar -zxvf /opt/hadoop-2.7.2.tar.gz -C /data/
[root@xiaoxiaomo ~]# mv /data/hadoop-2.7.2/ /data/hadoop
[root@xiaoxiaomo ~]# mkdir -p /data/data/hdfs/name ##需要创建一个目录不然启动会报错
[root@xiaoxiaomo ~]# vim /etc/profile ##添加如下
export HADOOP_HOME=/data/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:
# 【**备注后面的环境变量就略了,参考附录中的环境变量**】配置
配置core-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://xiaoxiaomo:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/data/hdfs/tmp</value>
</property>
<!-- 垃圾回收站
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
-->
</configuration>配置hadoop-env.sh
1
2export JAVA_HOME=/data/jdk
export HADOOP_LOG_DIR=/data/data/hdfs/logs配置hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/data/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/data/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///data/data/hdfs/namesecondary</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>xiaoxiaomo:9001</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<!--
<property>
<name>dfs.hosts</name>
<value>/data/hadoop/etc/hadoop/datanode-allow</value>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/data/hadoop/etc/hadoop/datanode-deny</value>
</property>
-->
</configuration>配置log4j.properties
1
hadoop.log.dir=/data/data/hdfs/logs
配置log4j.properties
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>xiaoxiaomo:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>xiaoxiaomo:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/history</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>${yarn.app.mapreduce.am.staging-dir}/history/done</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate</value>
</property>
<property>
<name>mapreduce.map.log.level</name>
<value>DEBUG</value>
</property>
<property>
<name>mapreduce.reduce.log.level</name>
<value>DEBUG</value>
</property>
</configuration>配置slaves
1
2#localtion修改为
xiaoxiaomoyarn-env.sh
1
2
3export JAVA_HOME=/data/jdk
export YARN_LOG_DIR=/data/data/hdfs/logs
export YARN_ROOT_LOGGER=DEBUG,DRFA配置yarn-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>xiaoxiaomo</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>xiaoxiaomo:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>xiaoxiaomo:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>xiaoxiaomo:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>xiaoxiaomo:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>xiaoxiaomo:8088</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
</configuration>
- 启动测试
1
2
3
4
5
6# 格式化数据目录
[root@xiaoxiaomo ~]# hdfs namenode -format
# 启动hdfs
[root@xiaoxiaomo ~]# start-dfs.sh ##访问:http://xiaoxiaomo:50070
# 启动yarn
[root@xiaoxiaomo ~]# start-yarn.sh ##访问:http://xiaoxiaomo:8088
安装zookeeper
1 | [root@xiaoxiaomo ~]# tar -zxvf /opt/zookeeper-3.4.9.tar.gz -C /data/ |
参考:
http://blog.xiaoxiaomo.com/2016/05/05/Zookeeper-%E9%9B%86%E7%BE%A4%E6%90%AD%E5%BB%BA/
安装HBase
1 | [root@xiaoxiaomo ~]# tar -zxvf hbase-1.3.1-bin.tar.gz -C /data/ |
- 修改配置
vi $HBASE_HOME/conf/hbase-env.sh
1
2
3export JAVA_HOME=/data/jdk
export HBASE_LOG_DIR=/data/data/hbase/logs
export HBASE_ROOT_LOGGER=INFO,DRFAvi $HBASE_HOME/conf/hbase-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21<property>
<name>hbase.tmp.dir</name>
<value>/data/data/hbase/tmp</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://xiaoxiaomo:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--zk -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>xiaoxiaomo</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/data/data/hbase/zk</value>
</property>vi $HBASE_HOME/conf/log4j.propertie
1
hbase.log.dir=/data/data/hbase/logs ##修改为统一目录
启动
1
2## 启动hbase
[root@xiaoxiaomo ~]# start-hbase.sh
安装MySQL
1 | [root@xiaoxiaomo opt]# rpm -qa|grep mysql #如有就卸载 |
参考:
http://blog.xiaoxiaomo.com/2016/02/22/Linux-%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85%E4%B9%8BMysql/
安装Hive
1 | [root@xiaoxiaomo opt]# tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /data/ |
- 修改配置
hive-env.sh
1
2
3
4[root@xiaoxiaomo hive]# vim conf/hive-env.sh ##添加如下配置
export JAVA_HOME=/data/jdk
export HIVE_HOME=/data/hive
export HADOOP_HOME=/data/hadoophive-env.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33[root@xiaoxiaomo hive]# vim conf/hive-env.sh ##修改如下配置
<property>
<name>hive.querylog.location</name>
<value>/data/data/hive/tmp</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/data/data/hive/tmp</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/data/data/hive/tmp</value>
</property>
<!-- 修改metadata为mysql -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8</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>复制mysql驱动jar包到$HIVE_HOME/lib/目录下
- 启动。查看mysql数据库 ##[root@xiaoxiaomo hive]# hive
参考:
http://blog.xiaoxiaomo.com/2016/05/27/Hive-%E6%A6%82%E8%BF%B0%E4%B8%8E%E4%BD%BF%E7%94%A8/
安装Kafka
解压 && 配置
1
2
3
4
5
6
7[root@xiaoxiaomo opt]# tar -zxvf kafka_2.11-0.11.0.0.tgz -C /data
[root@xiaoxiaomo opt]# mv /data/kafka_2.11-0.11.0.0/ /data/kafka
# 配置环境变量 && 修改配置文件
cd $KAFKA_HOME
log.dirs=/data/data/kafka/logs
zookeeper.connect=xiaoxiaomo:2181
[root@xiaoxiaomo kafka]# mkdir -p /data/data/kafka/logs启动 && 测试
1
2
3
4
5# 启动
[root@xiaoxiaomo kafka]# nohup /data/kafka/bin/kafka-server-start.sh /data/kafka/config/server.properties >>/data/data/kafka/logs/kafka-server.log 2>&1 &
# 测试
[root@xiaoxiaomo kafka]# bin/kafka-topics.sh --create --zookeeper xiaoxiaomo:2181 --replication-factor 1 --partitions 1 --topic hello
[root@xiaoxiaomo kafka]# bin/kafka-topics.sh --describe --zookeeper xiaoxiaomo:2181 --topic hello
参考:
http://blog.xiaoxiaomo.com/2016/05/14/Kafka-%E9%9B%86%E7%BE%A4%E5%8F%8AAPI%E6%93%8D%E4%BD%9C/
安装Redis
解压编译
1
2
3
4[root@xiaoxiaomo ~]# yum -y install gcc #依赖于gcc
[root@xiaoxiaomo ~]# tar -zxvf /opt/redis-3.0.6.tar.gz -C /data
[root@xiaoxiaomo ~]# cd /data/redis-3.0.6/
[root@xiaoxiaomo ~]# make PREFIX=/data/redis install #安装到指定目录将redis做成服务
1
2
3###将redis_init_script复制到/etc/rc.d/init.d/同时改名为redis
[root@xiaoxiaomo redis-3.0.6]# cp /opt/redis-3.0.6/utils/redis_init_script /etc/rc.d/init.d/redis
[root@xiaoxiaomo redis-3.0.6]# vim /etc/rc.d/init.d/redis配置
1
2
3
4
5
6
7
8
9
10
11
12###修改下面4行
#chkconfig: 2345 80 90 ##注意:这个在上面蓝色字体第二行
EXEC=/data/redis/bin/redis-server ##第七行
CLIEXEC=/data/redis/bin/redis-cli ##第八行
$EXEC $CONF & ##第二十行
# 配置环境变量 && 修改配置文件
cd $REDIS_HOME
##配置文件拷贝到/etc/redis/${REDISPORT}.conf
[root@xiaoxiaomo redis-3.0.6]# mkdir /etc/redis
[root@xiaoxiaomo redis-3.0.6]# cp /opt/redis-3.0.6/redis.conf /etc/redis/6379.conf注册服务 && 启动 && 停止
1
2
3
4
5
6# 注册redis服务:
[root@xiaoxiaomo redis-3.0.6]# vim /etc/redis/6379.conf
[root@xiaoxiaomo redis-3.0.6]# service redis start ##启动
[root@xiaoxiaomo redis-3.0.6]# service redis stop ##停止
[root@xiaoxiaomo redis-3.0.6]# redis-cli
127.0.0.1:6379> shutdown ##停止
参考:
http://blog.xiaoxiaomo.com/2016/02/23/Linux-%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85%E4%B9%8BRedis/
http://blog.xiaoxiaomo.com/2016/04/28/Redis-%E9%9B%86%E7%BE%A4/
安装Spark
安装 && 配置
1
2
3
4
5
6
7
8
9
10[root@xiaoxiaomo opt]# tar -zxvf spark-2.0.0-bin-hadoop2.7.tgz -C /data/
[root@xiaoxiaomo opt]# mv /data/spark-2.0.0-bin-hadoop2.7/ /data/spark
# 配置环境变量
[root@xiaoxiaomo conf]# cd $SPARK_HOME/conf
[root@xiaoxiaomo conf]# mv spark-env.sh.template spark-env.sh
[root@xiaoxiaomo conf]# mv slaves.template slaves
[root@xiaoxiaomo conf]# vi spark-env.sh
# 添加下面两项
SPARK_MASTER_IP=xiaoxiaomo
export JAVA_HOME=/data/jdk启动 && 访问
1
2
3
4
5# 启动
[root@xiaoxiaomo conf]# $SPARK_HOME/sbin/start-master.sh
[root@xiaoxiaomo conf]# $SPARK_HOME/sbin/start-slave.sh
# 访问
http://xiaoxiaomo:8080/
附录
环境变量
1
2
3
4
5
6
7
8
9
10
11
12
13export JAVA_HOME=/data/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export HADOOP_HOME=/data/hadoop
export HIVE_HOME=/data/hive
export HBASE_HOME=/data/hbase
export ZK_HOME=/data/zookeeper
export KAFKA_HOME=/data/kafka
export REDIS_HOME=/data/redis
export SPARK_HOME=/data/spark
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:${HADOOP_HOME}/sbin:$HIVE_HOME/bin:$HBASE_HOME/bin:$ZK_HOME/bin:$KAFKA_HOME/bin:$REDIS_HOME/bin:$SPARK_HOME/bin:$PATH软件下载(百度云下载地址)
本博客所用到的所有软件(除了Virtual Box因为自己的电脑是linux系统直接就安装了没单独下再)http://pan.baidu.com/s/1ge9cHiV
搭建好的虚拟机下载,下载后直接导入就可以使用
- 本博客中讲到的所有环境已经搭建好的虚拟机下载(root密码123456):http://pan.baidu.com/s/1slsd9iH
- 另外一个类似的已经搭建好的虚拟机下载(不同只是版本低一点root密码bd745127):使用java1.7 + hadoop2.6 + hive0.14 + hbase0.98 + spark1.4.1 + kafka_2.11-0.8.2.2 + zk3.5.6 + redis3.0.6