大数据各种环境搭建
系统环境准备
配置网卡信息
- 开启网卡
- ifup eth0
- 设置静态ip
- 静态ip:192.168.xxx.xxx
- 子网掩码:255.255.255.0
- 默认网关ip:192.168.xxx.2
- 主DNS服务器:114.114.114.114
- 第二DNS服务器:8.8.8.8
- 设置网卡开机自启
- vim /etc/sysconfig/network-scripts/ifcfg-eth0
- 重启网卡
- service network restart
安装文件上传与下载的插件
- yum install -y lrzsz
关闭防火墙(centos6)
- 查看防火墙状态 service iptables status
- 关闭防火墙 service iptables stop
- 启动防火墙 service iptables start
- 重启防火墙 service iptables restart
- 永久关闭防火墙 chkconfig iptables off
- 永久关闭后重启 chkconfig iptables on
修改主机名
- hostname hadoop01 临时修改
- vim /etc/sysconfig/network 永久修改
- 修改/etc/hosts文件配置DNS解析
配置免密登录
- 先生成密钥 ssh-keygen
- 分别拷贝到要被登录的主机上ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop02
修改hosts文件
192.168.174.128 hadoop01
192.168.174.129 hadoop02
192.168.174.131 hadoop03
安装JDK
- 解压
- 配置环境变量
JAVA_HOME=/usr/local/java/jdk1.8.0_201
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
集群运行环境要求
- 关闭防火墙
- 配置ssh免密登录
大数据的各种框架的搭建
安装zookeeper
- 解压zookeeper-3.4.8.tar.gz
- 进入conf目录,复制zoo-sample.cfg为zoo.cfg,通过修改zoo.cfg
- 修改置dataDir,并在tmp下创建一个myid(每一个编号对应以下配置的编号)
server.1=xxx.xxx.xxx.xxx:2888:3888 server.2=xxx.xxx.xxx.xxx:2888:3888 server.3=xxx.xxx.xxx.xxx:2888:3888
安装Hadoop(完全分布式)
- 解压
- 编辑 hadoop-env.sh,修改以下两项配置,并且重新生效
export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export HADOOP_CONF_DIR=/home/software/hadoop-2.7.1/etc/hadoop
- 修改core-site.xml,在标签中添加如下配置
<!--指定hdfs的nameservice,为整个集群起一个别名-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns</value>
</property>
<!--指定Hadoop数据临时存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/software/hadoop-2.7.1/tmp</value>
</property>
<!--指定zookeeper的存放地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
- 修改hdfs-site.xml
<!--执行hdfs的nameservice为ns,注意要和core-site.xml中的名称保持一致-->
<property>
<name>dfs.nameservices</name>
<value>ns</value>
</property>
<!--ns集群下有两个namenode,分别为nn1, nn2-->
<property>
<name>dfs.ha.namenodes.ns</name>
<value>nn1,nn2</value>
</property>
<!--nn1的RPC通信-->
<property>
<name>dfs.namenode.rpc-address.ns.nn1</name>
<value>hadoop01:9000</value>
</property>
<!--nn1的http通信-->
<property>
<name>dfs.namenode.http-address.ns.nn1</name>
<value>hadoop01:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns.nn2</name>
<value>hadoop02:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns.nn2</name>
<value>hadoop02:50070</value>
</property>
<!--指定namenode的元数据在JournalNode上存放的位置,这样,namenode2可以从journalnode集
群里的指定位置上获取信息,达到热备效果-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/software/hadoop-2.7.1/tmp/journal</value>
</property>
<!-- 开启NameNode故障时自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!-- 使用隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!--配置namenode存放元数据的目录,可以不配置,如果不配置则默认放到hadoop.tmp.dir下-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/software/hadoop-2.7.1/tmp/hdfs/name</value>
</property>
<!--配置datanode存放元数据的目录,可以不配置,如果不配置则默认放到hadoop.tmp.dir下-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/software/hadoop-2.7.1/tmp/hdfs/data</value>
</property>
<!--配置复本数量-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--设置用户的操作权限,false表示关闭权限验证,任何用户都可以操作-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
- 复制mapred-site.xml.template 为mapred-site.xml,并做如下配置
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 编辑yarn-site.xml
<!--配置yarn的高可用-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--指定两个resourcemaneger的名称-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!--配置rm1的主机-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop01</value>
</property>
<!--配置rm2的主机-->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop03</value>
</property>
<!--开启yarn恢复机制-->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!--执行rm恢复机制实现类-->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</
value>
</property>
<!--配置zookeeper的地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<!--执行yarn集群的别名-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>ns-yarn</value>
</property>
<!-- 指定nodemanager启动时加载server的方式为shuffle server -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定resourcemanager地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop03</value>
</property>
- 修改slaves文件, 配置datanode的主机名
hadoop01
hadoop02
hadoop03
- 拷贝到hadoop02,hadoop03的主机上
- 启动zookeeper
- 格式化zookeeper(在两个名称节点上执行)
hdfs zkfc -formatZK
- 启动journalnode
hadoop-daemon.sh start journalnode
- 在第一台节点上格式化并启动namenode
hadoop namenode -format
hadoop-daemon.sh start namenode
- 在第二个节点上格式化并启动namenode
hdfs namenode -bootstrapStandby
hadoop-daemon.sh start namenode
- 三台节点分别启动datanode
hadoop-daemon.sh start datanode
- 在第一台节点和第二台节点上启动zkfc(Failover Controller)
hadoop-daemon.sh start zkfc
- 在第一个节点上启动yarn
start-yarn.sh
- 在第三个节点启动resourcemanager
yarn-daemon.sh start resourcemanager
hadoop伪分布式安装
- 编辑hadoop-env.sh,修改两个变量,与上面一样
export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export HADOOP_CONF_DIR=/home/software/hadoop-2.7.1/etc/hadoop
- 修改core-site.xml
<property>
<!--指定HDFS的主节点-->
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<!--指定HDFS中的记录数据的目录,如果不配置,默认在/tmp-->
<name>hadoop.tmp.dir</name>
<value>/home/software/hadoop-2.7.1/tmp</value>
</property>
- 修改hdfs-site.xml
<property>
<!--设置复本数量,默认为3,但是在伪分布式下,必须设置>为1-->
<name>dfs.replication</name>
<value>1</value>
</property>
- cp mapred-site.xml.template mapred-site.xml, 并修改
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 编辑mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 编辑yarn-site.xml
<!--指定yarn的主节点-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
- 编辑slaves
hadoop01
- 修改环境变量
export HADOOP_HOME=/home/software/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 重新生效
source /etc/profile
- 格式化数据目录:hadoop namenode -format
- 启动命令:start-all.sh
- hdoop的一些默认端口介绍
Namenode:50070
Datanode:50075
SecondaryNamenode:50090
yarn:8088
Flume的各种配置
- 下载并解压flume
- 到flume解压目录下创建一个目录,例如,flumeconf(任意名字)
- 再到flumeconf下创建一个文件,例如my.conf(名字任意)
- 再新创建的文件中配置即可,配置实例如下
a1.sources=r1 a1.channels=c1 a1.sinks=s1 a1.sources.r1.type=spooldir a1.sources.r1.spoolDir=/home/zebra a1.sources.r1.interceptors=i1 a1.sources.r1.interceptors.i1.type=timestamp a1.sinks.s1.type=hdfs a1.sinks.s1.hdfs.path=hdfs://192.168.150.137:9000/zebra/reportTime=%Y-%m-%d a1.sinks.s1.hdfs.fileType=DataStream a1.sinks.s1.hdfs.rollInterval=30 a1.sinks.s1.hdfs.rollSize=0 a1.sinks.s1.hdfs.rollCount=0 a1.channels.c1.type=memory a1.sources.r1.channels=c1 a1.sinks.s1.channel=c1
- 启动flume(以下是在flume自定义配置文件中执行)
../bin/flume-ng agent -n a1 -c ./ -f ./my.conf -Dflume.root.logger=INFO,console
Hive的安装配置
- 方式一: 以默认的方式存储元数据
- 解压,到bin目录下运行sh hive即可
- 方式二: 用mysql存储元数据
- 删除hdfs中的/user/hive
执行:hadoop fs -rmr /user/hive
2.将mysql驱动包上传到hive安装目录的lib目录下
3.编辑新的配置文件,名字为:hive-site.xml
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop01:3306/hive?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>
- 安装mysql
- hive要求存储元数据的字符集必须是iso8859-1,进入mysql, create database hive character set latin1;
- 删除hdfs中的/user/hive
Mysql的安装配置
-
下载mysql的安装包
- MySQL-server-5.6.29-1.linux_glibc2.5.x86_64.rpm
- rpm -ivh MySQL-client-5.6.29-1.linux_glibc2.5.x86_64.rpm
-
确认当前虚拟机之前是否有安装过mysql
- 查看:rpm -qa | grep mysql
-
删除mysql
- rpm -ev --nodeps mysql-libs-5.1.71-1.el6.x86_64
-
新增mysql用户组,并创建mysql用户
groupadd mysql
useradd -r -g mysql mysql -
安装mysql server rpm包和client包
- rpm -ivh MySQL-server-5.6.29-1.linux_glibc2.5.x86_64.rpm
- rpm -ivh MySQL-client-5.6.29-1.linux_glibc2.5.x86_64.rpm
-
安装后,mysql文件所在的目录
- Directory Contents of Directory
- /usr/bin Client programs and scripts
- /usr/sbin The mysqld server
- /var/lib/mysql Log files, databases
- /usr/share/info MySQL manual in Info format
- /usr/share/man Unix manual pages
- /usr/include/mysql Include (header) files
- /usr/lib/mysql Libraries
- /usr/share/mysql Miscellaneous support files, including error messages, - character set files, sample configuration files, SQL for database installation
- /usr/share/sql-bench Benchmarks
-
修改my.cnf,默认在/usr/my.cnf
- 执行:vim /usr/my.cnf
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] character_set_server=utf8
-
将mysqld加入系统服务,并随机启动
- 执行:cp /usr/share/mysql/mysql.server /etc/init.d/mysqld
-
启动mysqld
- 执行:service mysqld start
-
查看初始生成的密码
- 执行:vim /root/.mysql_secret 。这个密码随机生成的
-
修改初始密码
- 第一次安装完mysql后,需要指定登录密码
- 执行:mysqladmin -u root -p password root 此时,提示要输入初始生成的密码,拷贝过来即可
12.进入mysql数据库 - 执行:mysql -u root -p
- 输入:root进入
- 执行:\s ,查看mysql数据配置信息
- 附加:
- mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 以安全模式进入mysql
mysql -u root - UPDATE user set password=password(‘root’) where user=‘root’; 设置密码
- flush privileges; 刷新
- Exit; 退出安全模式,重新进入mysql
- create database hive character set latin1; 创建一个hive数据库并制定字符集为latin1,因为hive只支持latin1字符集
- mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 以安全模式进入mysql
sqoop的安装配置
- 准备sqoop安装包,官网地址:http://sqoop.apache.org
- 配置jdk环境变量和Hadoop的环境变量。因为sqoop在使用是会去找环境变量对应的路径,从而完整工作。
- sqoop解压即可使用(前提是环境变量都配好了)
- 需要将要连接的数据库的驱动包加入sqoop的lib目录下(本例中用的是mysql数据库)
HBase的完全分布式安装配置
- 先准备好jdk和zk,hadoop
- 编辑conf/hbase-env.sh,修改以下两项配置
export JAVA_HOME=xxxx
export HBASE_MANAGES_ZK=false
- 修改hbase-site.xml,配置开启完全分布式模式
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop01:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
#配置Zookeeper的连接地址与端口号
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
- 修改conf/regionservers文件,配置region服务器,hbase启动或关闭会按一下配置顺序进行
hadoop01
hadoop02
hadoop03
- 将01节点配置好的hbase远程拷贝到02,03节点上
- 启动zk
- 启动01节点的Hbase,到bin目录执行 sh start-hbase.sh
- ./hbase shell 启动hbase控制台
- http://hadoop01:60010来访问web界面,通过web见面管理hbase
- 关闭
- stop-hbase.sh 关闭Hmaster
- sh hbase-daemon.sh stop regionserver 关闭regionserver
Kafka的安装配置
- 下载安装包
- 上传Linux并解压 tar -zxvf kafka_2.11-1.0.0.tgz
- 修改配置文件
# 修改配置
broker.id=0
log.dirs=/home/software/kafka/kafka-logs
zookeeper.connect=hadoop01:2181,hadoop02:2181,hadoop03:2181
# 添加配置
delete.topic.enable=true
advertised.host.name=192.168.234.21
advertised.port=9092
- 在安装目录下创建kafka-logs目录
- 启动zookeeper集群
- 进入kafka的bin目录启动kafka
执行:sh kafka-server-start.sh ../config/server.properties
Storm的集群安装配置
- 安装配置JDK
- 安装配置ZK
- 上传解压storm
- 配置storm安装目录下的storm.yarm文件
# 注意配置项开头需要有空格,:后面需要跟空格,否则启动会报错
storm.zookeeper.servers:
- "hadoop01"
- "hadoop02"
- "hadoop03"
nimbus.host: "hadoop01"
storm.local.dir: "/home/software/apache-storm-0.9.3/tmp"
- 在storm安装目录下创建tmp目录
- 启动
- 启动imubs后台进程: ./storm nimbus >/dev/null 2>&1 &
- 启动supervisor后台进程 ./storm supervisor >/dev/null 2>&1 &
- 启动ui后台进程 ./storm ui >/dev/null 2>&1 &
- jps查看进程是否启动成功
- nimubs
- supervisor
- core
- 通过浏览器访问hadoop01节点:hadoop01:8080/index.html
Spark的安装配置
Spark的单机版安装
- 安装和配置好JDK
- 上传和解压Spark安装包
- 进入Spark安装目录下的conf目录
复制spark-env.sh.template 文件为 spark-env.sh在其中修改,增加如下内容:
# hadoop01代表当前主机名,也可用ip
SPARK_LOCAL_IP=hadoop01
- Spark单机模式启动
在bin目录下执行:sh spark-shell --master=local
- 备注:
- spark控制台可以通过ctrl + L清屏
- 通过浏览器访问spark: http://hadoop01:4040
Spark集群环境搭建
- 实现步骤:
-
上传解压spark安装包
-
进入spark安装目录的conf目录
-
配置spark-env.sh文件
SPARK_LOCAL_IP=hadoop01 #spark的shuffle中间过程会产生一些临时文件,此项指定的是其存放目录,不配置默认是在 /tmp目录下 SPARK_LOCAL_DIRS=/home/software/spark/tmp export JAVA_HOME=/home/software/jdk1.8
-
在conf目录下,编辑slaves文件
hadoop01 hadoop02 hadoop03
-
配置完后,将spark目录发送至其他节点, 并更改对应的SPARK_LOCAL_IP配置
-