<!--此处使用xml形式展示,便于在有些文件编辑工具中格式化展示,表明不同的部分和重点-->
<部分内容参考自 北风网大数据课程>
<!--基础环境配置-->
< 1.安装ssh软件配置免密登陆>
ssh-keygen
ssh-cpoy-id mini2<2.修改Linux主机名>/etc/sysconfig/network
<3.修改IP>修改IP地址:和HWaddr(mac)地址与上面的文件中的HWaddr地址一样ONBOOT=yesBOOTPROTO=staticIPADDR=192.168.183.130GATEWAY=192.168.183.2NETMASK=255.255.255.0
<注意: 虚拟机在集群搭建好之后,需要把网络是这一次dhcp,测试联通外网之后,再设置成static,这样才能和外网连接通。初步分析:可能在第一次连接外网的时候拉去了部分需要的信息,之后静态地址使用了这些东西。>
<4.修改主机名和IP的映射关系>######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机、阿里云主机等)/etc/hosts里面要配置的是内网IP地址和主机名的映射关系
<5.关闭防火墙>1. Linux防火墙(Iptables)重启系统生效开启: chkconfig iptables on 关闭: chkconfig iptables off 2.Linux防火墙(Iptables) 即时生效,重启后失效开启: service iptables start 关闭: service iptables stop
------------------------------------------------------------------------------------------------------------
安装步骤:
<!--1.安装配置zooekeeper集群(在weekend05上)-->1.1解压tar -zxvf zookeeper-3.4.5.tar.gz -C /weekend/1.2修改配置cd /weekend/zookeeper-3.4.5/conf/cp zoo_sample.cfg zoo.cfgvim zoo.cfg修改:dataDir=/weekend/zookeeper-3.4.5/tmp在最后添加:server.1=weekend05:2888:3888server.2=weekend06:2888:3888server.3=weekend07:2888:3888保存退出然后创建一个tmp文件夹mkdir /weekend/zookeeper-3.4.5/tmp再创建一个空文件touch /weekend/zookeeper-3.4.5/tmp/myid最后向该文件写入IDecho 1 > /weekend/zookeeper-3.4.5/tmp/myid1.3将配置好的zookeeper拷贝到其他节点(首先分别在weekend06、weekend07根目录下创建一个weekend目录:mkdir /weekend)scp -r /weekend/zookeeper-3.4.5/ weekend06:/weekend/scp -r /weekend/zookeeper-3.4.5/ weekend07:/weekend/注意:修改weekend06、weekend07对应/weekend/zookeeper-3.4.5/tmp/myid内容weekend06:echo 2 > /weekend/zookeeper-3.4.5/tmp/myidweekend07:echo 3 > /weekend/zookeeper-3.4.5/tmp/myid1.4 启动停止zookeeperzkServer.sh start/stop<!--2.安装配置hadoop集群(在weekend01上操作)-->2、将hadoop包进行解压缩:tar -zxvf hadoop-2.5.0-cdh5.3.6.tar.gz3、对hadoop目录进行重命名:mv hadoop-2.5.0-cdh5.3.6 hadoop4、配置hadoop相关环境变量vi ~/.bashrcexport HADOOP_HOME=/usr/local/hadoopexport PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbinsource ~/.bashrc5、创建/usr/local/data目录<!--修改core-site.xml--><property><name>fs.default.name</name><value>hdfs://sparkproject1:9000</value></property><property><name>ha.zookeeper.quorum</name><value>node1:2181,node2:2181,node3:2181</value></property><!---- 修改hdfs-site.xml--><property><name>dfs.name.dir</name><value>/usr/local/data/namenode</value></property><property><name>dfs.data.dir</name><value>/usr/local/data/datanode</value></property><property><name>dfs.tmp.dir</name><value>/usr/local/data/tmp</value></property><property><name>dfs.replication</name><value>2</value></property><!--修改mapred-site.xml--><property><name>mapreduce.framework.name</name><value>yarn</value></property><!-- 修改yarn-site.xml--><property><name>yarn.resourcemanager.hostname</name><value>sparkproject1</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!--- 修改slaves文件-->sparkproject2sparkproject3
< 在另外两台机器上搭建hadoop>
scp -r hadoop root@sparkproject2:/usr/local< 启动hdfs集群>
1、格式化namenode:在sparkproject1上执行以下命令,hdfs namenode -format
2、启动hdfs集群:start-dfs.sh3、验证启动是否成功:jps、50070端口
sparkproject1:namenode、secondarynamenode
sparkproject2:datanode
sparkproject3:datanode
4、hdfs dfs -put hello.txt /hello.txt
< 启动yarn集群>
1、启动yarn集群:start-yarn.sh2、验证启动是否成功:jps、8088端口
sparkproject1:resourcemanager、nodemanager
sparkproject2:nodemanager
sparkproject3:nodemanagerstart-all.sh启动所有,包括 start-yarn.sh start-dfs.sh<!--3 spark安装-->
<spark底层是使用scala实现的所以需要下载相对应的scala版本,设置scala的环境变量>
< 修改spark-env.sh文件>
1、cd /usr/local/spark/conf
2、cp spark-env.sh.template spark-env.sh
3、vi spark-env.sh
export JAVA_HOME=/usr/java/latest
export SCALA_HOME=/usr/local/scala
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop<slave配置>
slaves.template slaves
配置内容如下master
worker1
worker2< 启动spark脚本 >
/opt/spark-2.1.0-bin-hadoop2.7/sbin/start-all.sh
< 用yarn-client模式提交spark作业>
/usr/local/spark/bin/spark-submit \
--class org.apache.spark.example.JavaSparkPi \
--master yarn-client \
--num-executors 1 \
--driver-memory 10m \
--executor-memory 10m \
--executor-cores 1 \
/usr/local/spark/lib/spark-examples-1.5.1-hadoop2.4.0.jar \< 用yarn-cluster模式提交spark作业>
/usr/local/spark/bin/spark-submit \
--class org.apache.spark.example.JavaSparkPi \
--master yarn-cluster \
--num-executors 1 \
--driver-memory 10m \
--executor-memory 10m \
--executor-cores 1 \
/usr/local/spark/lib/spark-examples-1.5.1-hadoop2.4.0.jar \<!--安装Kafka包 -->
<kafka也是用scala编写的需要配置scala环境变量>
##配置kafka
vi /usr/local/kafka/config/server.properties
broker.id:依次增长的整数,0、1、2,集群中Broker的唯一id
zookeeper.connect=192.168.1.105:2181,192.168.1.106:2181,192.168.1.107:2181
##安装slf4j
将课程提供的slf4j-1.7.6.zip上传到/usr/local目录下
unzip slf4j-1.7.6.zip
把slf4j中的slf4j-nop-1.7.6.jar复制到kafka的libs目录下面
< 搭建kafka集群>
1、按照上述步骤在另外两台机器分别安装kafka。用scp把kafka拷贝到sparkproject2和sparkproject3即可。
2、唯一区别的,就是server.properties中的broker.id,要设置为1和2
< 启动kafka集群>
在三台机器上的kafka目录下,分别执行以下命令:< nohup bin/kafka-server-start.sh config/server.properties & >< 测试kafka集群>
使用基本命令检查kafka是否搭建成功
<设置kafka主题>
bin/kafka-topics.sh --zookeeper 192.168.1.105:2181,192.168.1.106:2181,192.168.1.107:2181 --topic TestTopic --replication-factor 1 --partitions 1 --create
<启动生产者>
bin/kafka-console-producer.sh --broker-list 192.168.1.105:9092,192.168.1.106:9092,192.168.1.107:9092 --topic TestTopic
<启动消费者进程>
bin/kafka-console-consumer.sh --zookeeper 192.168.1.105:2181,192.168.1.106:2181,192.168.1.107:2181 --topic TestTopic --from-beginning<!--flume安装-->
< 修改flume配置文件 >
<flume启动使用的是该配置文件,每个flume进程都可以单独配置一个配置文件,名字随意>
<在配置文件中需要指定zookeeper地址>
<此处没有实现flume的高可用是单机版的 高可用参考:http://blog.csdn.net/shouhuzhezhishen/article/details/64904848>
vi /usr/local/flume/conf/flume-conf.properties#agent1表示代理名称
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1
#配置source1
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir=/usr/local/logs
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader = false
agent1.sources.source1.interceptors = i1
agent1.sources.source1.interceptors.i1.type = timestamp
#配置channel1
agent1.channels.channel1.type=file
agent1.channels.channel1.checkpointDir=/usr/local/logs_tmp_cp
agent1.channels.channel1.dataDirs=/usr/local/logs_tmp
#配置sink1
agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path=hdfs://sparkproject1:9000/logs
agent1.sinks.sink1.hdfs.fileType=DataStream
agent1.sinks.sink1.hdfs.writeFormat=TEXT
agent1.sinks.sink1.hdfs.rollInterval=1
agent1.sinks.sink1.channel=channel1
agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d
< flume 启动命令>
nohup sh flume-ng agent --conf-file ../conf/flume-conf.properties --name agent -Dflume.root.logger=INFO,console &<!--hbase 安装-->
< -----------------------hbase_env.sh----------------------------------- >
export JAVA_HOME=/usr/jdk/# Extra Java CLASSPATH elements. Optional.这行代码是错的,需要可以修改为下面的形式
#export HBASE_CLASSPATH=/home/hadoop/hbase/conf
export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 设置垃圾回收机制GC(gabage collection)
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
# true 内部自带的zookeeper false自己的zookeeper
export HBASE_MANAGES_ZK=false
< ---------------------------------hbase-site.xml 非高可用模式---------->
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://spark1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>spark1,spark2,spark3</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/data/hbasezookeeper</value>
</property><!--设置hbase主备之间时差最大的间隔-->
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
</property>
</configuration>
< --------------regionservers文件存放从节点的位置----------------------- >
mini3
mini4
mini5
< 启动hbase >
start-hbase.sh<!--hive安装-->< 安装mysql >1、在sparkproject1上安装mysql。
2、使用yum安装mysql server。
yum install -y mysql-server
service mysqld start
chkconfig mysqld on
3、使用yum安装mysql connector
yum install -y mysql-connector-java
4、将mysql connector拷贝到hive的lib包中
cp /usr/share/java/mysql-connector-java-5.1.17.jar /usr/local/hive/lib
5、在mysql上创建hive元数据库,创建hive账号,并进行授权
create database if not exists hive_metadata;
grant all privileges on hive_metadata.* to 'hive'@'%' identified by 'hive';
grant all privileges on hive_metadata.* to 'hive'@'localhost' identified by 'hive';
grant all privileges on hive_metadata.* to 'hive'@'spark1' identified by 'hive';
flush privileges;
use hive_metadata;
< 配置hive-site.xml >
mv hive-default.xml.template hive-site.xml<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://spark1:3306/hive_metadata?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>hive</value>
</property>
<property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value>
</property>< 配置hive-env.sh和hive-config.sh >
mv hive-env.sh.template hive-env.shvi /usr/local/hive/bin/hive-config.sh
export JAVA_HOME=/usr/java/latest
export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop< 验证hive是否安装成功 >
直接输入hive命令,可以进入hive命令行create table users(id int, name string)
load data local inpath '/usr/local/users.txt' into table users
select name from users