**hadoop集群搭建**

Hadoop 安装:

一、集群规划
	Hadoop 集群采用主从模式设计
		主节点(master):负责分配任务
		从节点(slave1,slave2):负责执行任务
		
	1. 检查每个节点的主机名是否正确
		hostname
		修改主机名编辑 /etc/hostname 后 reboot
		
二、配置网络
	1. 关闭所有节点的防火墙,并禁止开机启动
		systemctl stop firewalld
		systemctl disable firewalld
		
	2. 编辑所有节点的 /etc/hosts 文件,增加每一个节点的域名
		192.168.179.100   master
		192.168.179.101   slave1
		192.168.179.102   slave2
		
		编辑完以后就可以在需要输入 ip 的地方,通过输入主机名代替
	
	3. 使用 ping 命令检测配置是否正确和网络是否通畅
		ping master
		ping slave1
		ping slave2

三、配置所有节点之间免密登录:
	1. 验证是否安装 ssh 和 是否启动 sshd 进程
		which ssh
		ps -ef | grep sshd
		
	2. 分别在 3 个节点生成公钥和私钥
		ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

	3. 检查是否生成公钥和私钥
		ls /root/.ssh/
			id_rsa 私钥   id_rsa.pub 公钥
			
	4. 分别在 3 个节点执行命令,把各自的公钥发送给 master 保存
		ssh-copy-id master
		
	5. 检查 master 是否收集到了所有人的公钥
		cat /root/.ssh/authorized_keys
		
	6. 把 authorized_keys 发送给 slave1 和 slave2
		scp /root/.ssh/authorized_keys root@slave1:/root/.ssh 
		scp /root/.ssh/authorized_keys root@slave2:/root/.ssh
	
	7. 分别在 3 个节点执行命令,验证是否能够互相之间免密登录
		ssh master
		exit
		
		ssh slave1
		exit
		
		ssh slave2
		exit
		
	8. 如果上面的任意一步有错,删除 /root/.ssh 文件夹,重新开始

四、在 master 安装 jdk
	去官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 
	解压到安装目录
	tar -zxvf jdk-8u101-linux-x64.tar.gz -C /usr/local/java/
	配置环境变量
	vim /etc/profile
	export JAVA_HOME=/usr/local/java/jdk1.8.0_101
	export JRE_HOME=${JAVA_HOME}/jre
	export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
	export PATH=${JAVA_HOME}/bin:$PATH
	source /etc/profile
	
五、在 master 安装 hadoop
	1. 把 hadoop 安装包上传到 master 并解压
		tar -xvf hadoop-2.7.6.tar.gz
		
	2. 把解压内容移动到 /usr/local/hadoop 文件夹内
		mv hadoop-2.7.6 /usr/local/hadoop
			移动前要保证 hadoop 文件夹不存在
			绝对不要自己创建 hadoop 文件夹,
			否则会把 hadoop-2.7.6 放入 hadoop 文件夹
			
	3. 配置 hadoop 的环境变量,允许我们在任意目录使用 hadoop 相关的命令
		vi /etc/profile
		
		export HADOOP_HOME=/usr/local/hadoop
		export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
		
		source /etc/profile
		
	4. 验证安装是否成功
		hadoop version

六、配置 master 的 hadoop
	所有的配置文件都存放在安装目录下的 etc/hadoop 文件夹内
	总共需要修改 7 个配置文件
	
	1. slaves 保存所有从节点的 ip
		一行写一个从节点的主机名
		
	2. hadoop-env.sh 配置 hadoop 的运行环境
		编辑第 25 行的 JAVA_HOME
		
	3. yarn-env.sh 配置 yarn 的运行环境
		解注释第 23 行,并修改 JAVA_HOME
		
	4.编辑 core-site.xml 文件
		<configuration>
			<property>
				<name>fs.defaultFS</name>
				<value>hdfs://master:9000</value>
			</property>
			
			<property>
				<name>hadoop.tmp.dir</name>
				<value>/usr/local/hadoop/hdfs</value>
			</property>
		</configuration>
	5.编辑 hdfs-site.xml 文件
		<configuration>
			<property>
				<name>dfs.namenode.secondary.http-address</name>
				<value>hdfs://master:50090</value>
			</property>
		</configuration>
	6.编辑 yarn-site.xml 文件
		<configuration>
			<property>
				<name>yarn.nodemanager.aux-services</name>
				<value>mapreduce_shuffle</value>
			</property>

			<property>
				<name>yarn.resourcemanager.hostname</name>
				<value>master</value>
			</property>
		</configuration>
	7.重命名 mapred-site.xml.template 文件为 mapred-site.xml,并编辑
		<configuration>
			<property>
				<name>mapreduce.framework.name</name>
				<value>yarn</value>
			</property>
			<property>
				<name>mapreduce.jobhistory.address</name>
				<value>master:10020</value>
			</property>
			<property>
				<name>mapreduce.jobhistory.webapp.address</name>
				<value>master:19888</value>
			</property>
		</configuration>
七.把 master 安装好的文件复制给 slave		
		
		
八.格式化Hadoop
	在 master 上执行 hdfs namenode -format 格式化主节点。如果成功会看到 successfully formatted.
	
	重新格式化最好先删除master上hadoop安装目录下的hdfs文件夹	
		
		
浏览器输入 http://master-ip:50070 查看 hdfs 管理页面。		
		   http://master-ip:8088 查看 yarn 管理页面

使用 stop-dfs.sh 关闭 hdfs 功能。
使用 stop-yarn.sh 关闭 yarn 功能。

HA配置(需要先安装zookeeper):
	1)vi hadoop-env.sh
		配置JDK安装路径:
		JAVA_HOME=/usr/local/jdk
		
	2)vi core-site.xml
		<configuration>
			<!-- hdfs地址,ha模式中是连接到nameservice  -->
			<property>
				<name>fs.defaultFS</name>
				<value>hdfs://ns1</value>
			</property>
			<!-- 这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录,也可以单独指定 -->
			<property>
				<name>hadoop.tmp.dir</name>
				<value>/usr/local/hadoop/hdfs</value>
			</property>

			<!-- 指定ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点-->
			<property>
				<name>ha.zookeeper.quorum</name>
				<value>master:2181,slave1:2181,slave2:2181</value>
			</property>

		</configuration>

		
	3)vi hdfs-site.xml
		<configuration>
			<property>
				<name>dfs.namenode.secondary.http-address</name>
				<value>hdfs://master:50090</value>
			</property>

			<!-- 为namenode集群定义一个services name -->
			<property>
				<name>dfs.nameservices</name>
				<value>ns1</value>
				</property>

			<!-- nameservice 包含哪些namenode -->
			<property>
				<name>dfs.ha.namenodes.ns1</name>
				<value>master,slave1</value>
			</property>

			<!-- 名为master的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->
			<property>
				<name>dfs.namenode.rpc-address.ns1.master</name>
				<value>master:9000</value>
			</property>
	
			<property>
				<name>dfs.namenode.http-address.ns1.master</name>
				<value>master:50070</value>
			</property>
			<!-- 名为slave1的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->
			<property>
				<name>dfs.namenode.rpc-address.ns1.slave1</name>
				<value>slave1:9000</value>
			</property>
    
			<property>
				<name>dfs.namenode.http-address.ns1.slave1</name>
				<value>slave1:50070</value>
			</property>

			<!-- namenode间用于共享编辑日志的journal节点列表 -->
			<property>
				<name>dfs.namenode.shared.edits.dir</name>
				<value>qjournal://master:8485;slave1:8485;slave2:8485/ns1</value>
			</property>

			<!-- 指定该集群出现故障时,是否自动切换到另一台namenode -->
			<property>
				<name>dfs.ha.automatic-failover.enabled</name>
				<value>true</value>
			</property>

			<!-- journalnode 上用于存放edits日志的目录,位置可随意设置 -->
			<property>
				<name>dfs.journalnode.edits.dir</name>
				<value>/usr/local/hadoop/hdfs/journalnode</value>
			</property>

			<!-- 客户端连接可用状态的NameNode所用的代理类 -->
			<property>
				<name>dfs.client.failover.proxy.provider.ns1</name>
				<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
			</property>

			<!-- 一旦需要NameNode切换,使用ssh方式进行操作 -->
			<property>
				<name>dfs.ha.fencing.methods</name>
				<value>sshfence</value>
			</property>

			<!-- 如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置 -->
			<property>
				<name>dfs.ha.fencing.ssh.private-key-files</name>
				<value>/root/.ssh/id_rsa</value>
			</property>

			<!-- connect-timeout超时时间 -->
			<property>
				<name>dfs.ha.fencing.ssh.connect-timeout</name>
				<value>30000</value>
			</property>

		</configuration>
	
	4)vi mapred-site.xml	
		
		<configuration>
			<property>
				<name>mapreduce.framework.name</name>
				<value>yarn</value>
			</property>
			<property>
				<name>mapreduce.jobhistory.address</name>
				<value>master:10020</value>
			</property>
			<property>
				<name>mapreduce.jobhistory.webapp.address</name>
				<value>master:19888</value>
			</property>
		</configuration>

	5)vi yarn-site.xml	
		
		<configuration>
			<property>
				<name>yarn.nodemanager.aux-services</name>
				<value>mapreduce_shuffle</value>
			</property>

			<!-- 启用HA高可用性 -->
			<property>
				<name>yarn.resourcemanager.ha.enabled</name>
				<value>true</value>
			</property>

			<!-- 指定resourcemanager的名字 -->
			<property>
				<name>yarn.resourcemanager.cluster-id</name>
				<value>yarn</value>
			</property>


			<!-- 使用了2个resourcemanager,分别指定Resourcemanager的地址 -->
			<property>
				<name>yarn.resourcemanager.ha.rm-ids</name>
				<value>rm1,rm2</value>
			</property>


			<!-- 指定rm1的地址 -->
			<property>
				<name>yarn.resourcemanager.hostname.rm1</name>
				<value>master</value>
			</property>

			<!-- 指定rm2的地址  -->
			<property>
				<name>yarn.resourcemanager.hostname.rm2</name>
				<value>slave1</value>
			</property>


			<!-- 指定当前机器master作为rm1 -->
			<property>
				<name>yarn.resourcemanager.ha.id</name>
				<value>rm1</value>
			</property>


			<!-- 指定zookeeper集群机器 -->
			<property>
				<name>yarn.resourcemanager.zk-address</name>
				<value>master:2181,slave1:2181,slave2:2181</value>
			</property>

			<!--以下为解决spark-shell 以yarn client模式运行报错问题而增加的配置,估计spark-summit也会有这个问题。
				2个配置只用配置一个即可解决问题,当然都配置也没问题-->
			<!--虚拟内存设置是否生效,若实际虚拟内存大于设置值 ,spark 以client模式运行可能会报错,
				"Yarn application has already ended! It might have been killed or unable to l"-->
			<property>
				<name>yarn.nodemanager.vmem-check-enabled</name>
				<value>false</value>
			</property>

			<property>
				<name>yarn.nodemanager.vmem-pmem-ratio</name>
				<value>4</value>
			</property>

		</configuration>

	6)vi slaves	
		
		slave1
		slave2

	拷贝hadoop到其他机器
		1)拷贝
			scp -r /usr/local/hadoop root@slave1:/use/local/hadoop/

			scp -r /use/local/hadoop root@slave2:/usr/local/hadoop/
		2)修改yarn-site.xml
			在slave1机器,即ResourceManager备用主节点上修改如下属性,表示当前机器作为rm2::
				<property>
					<name>yarn.resourcemanager.ha.id</name>
					<value>rm2</value>
				</property>
			
			同时删除slave2机器上的该属性对,因为slave2机器并不作为ResourceManager。
		
	1. 三个节点都启动 zookeeper
		zkServer.sh start
	
	2. 三个节点都启动 journalnode
		hadoop-daemon.sh start journalnode
	
	3. 格式化集群
		hdfs namenode -format
	
	4. 格式化 zookeeper
		hdfs zkfc -formatZK
	
	5. 在 master 和 slave1 安装 psmisc 软件
		yum -y install psmisc
		
	6. 单独启动 master 的 namenode
		hadoop-daemon.sh start namenode

	7. 同步 master 的 namenode 中的元数据到 slave1
		在 slave1 执行:hdfs namenode -bootstrapStandby
	
	8. 关闭 master 的 namenode
		hadoop-daemon.sh stop namenode

	9. 启动集群
		start-dfs.sh

jdk安装:

	1.访问 jdk 官方下载地址,选择 tar.gz 版本。
	2.把下载好的 jdk 上传到 /root 文件夹。
	3.使用 tar -xvf jdk-8u141-linux-x64.tar.gz 命令解压 jdk 到当前目录。
	4.使用 mv jdk1.8.0_141/ /usr/local/jdk 命令,移动解压后的文件到 /usr/local/jdk 目录中。
配置:
	1.使用 vi /etc/profile 命令,编辑环境变量文件,并进入一般模式。
	2.按 i 键进入编辑模式。
	3.添加以下环境变量到文件最后。
		export JAVA_HOME=/usr/local/jdk
		export JRE_HOME=/usr/local/jdk/jre
		export CLASSPATH=.:$JRE_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
		export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
	4.使用 source /etc/profile 刷新环境变量配置文件,使其生效。
	5.验证安装是否成功

mysql安装:

	1.下载 MySQL 的 yum 源。
	2.上传下载的 rpm 文件到 root 文件夹。
	3.使用 rpm -ivh mysql-community-release-el7-1.noarch.rpm 命令安装源文件。
	4.使用 yum -y install mysql-server 命令安装 MySQL。
	5.使用 systemctl start mysqld 命令启动 MySQL 服务。
	6.使用 systemctl enable mysqld 命令配置开机启动 MySQL 服务。
	7.执行 grep 'password' /var/log/mysqld.log 命令查看默认密码。
	8.使用 mysql -u root -p 登录 MySQL。
	9.使用 alter user 'root'@'localhost' identified by '密码'; 修改默认密码。
	10.使用 use mysql; 和 update user set host='%' where user='root'; 语句开启远程访问。
	11.使用 flush privileges; 语句使权限修改立即生效。
	12.上传 db.sql 脚本文件到 /root 文件夹,并使用 source /root/db.sql 语句创建数据库。
	使用 systemctl stop firewalld 命令关闭防火墙。
	使用 systemctl disable firewalld 命令禁止防火墙开机启动。	

nginx安装:

1.在/etc/yum.repos.d/目录下创建nginx.repo文件
	编辑内容:
	[nginx]
	name=nginx repo
	baseurl=http://nginx.org/packages/centos/7/$basearch/
	gpgcheck=0
	enabled=1
2.使用 yum -y install nginx 安装。
	systemctl start nginx 启动 nginx。
	systemctl stop nginx 停止 nginx。
	systemctl restart nginx 重启 nginx。
配置
	nginx 的配置文件放在 /etc/nginx 目录下,修改了 nginx 的任意配置项都要重启 nginx 才能生效。
	需要关注的文件有两个:nginx.conf 和 conf.d 两个。
	nginx.conf 是 nginx 的配置文件。conf.d 文件夹中放的是我们自定义的项目配置文件。
	修改 nginx.conf 的第一行为:user root;。让我们以 root 用户身份启动 nginx。

redis安装:

	1. 下载并上传到 root
	2. 解压到当前文件夹
	3. 进入解压后的目录
	4. 安装 c++ 编译器
		yum -y install gcc-c++
		yum -y install tcl
	5. 使用 make 命令编译源代码
	6. 使用 make test 测试是否缺少依赖缺什么使用 yum 安装什么
	7. 使用 make PREFIX=/usr/local/redis install 安装
	8. 为了统一管理 redis,把 redis.conf 拷贝到 /usr/local/redis 文件夹
	9. 进入 /usr/local/redis 目录,并编辑 redis.conf 文件
	10. 使用 # 注释 bind 127.0.0.1 这一行,开启远程访问
	11. 进入 bin 目录使用 ./redis-server 命令启动 redis 服务器
	12. 在新的窗口中进入 bin 目录使用 ./redis-cli 命令启动 redis 客户端
	13. 使用 config set requirepass 123456 为 redis 设置密码为 123456

flume安装:

	1. 上传、解压和移动到 /usr/local/flume
	2. 配置环境变量
		export FLUME_HOME=/usr/local/flume
		export PATH=$PATH:$FLUME_HOME/bin
	3. 验证是否安装成功
		flume-ng version
使用:
	1. 创建并编辑 flume-conf.properties 文件
	2. flume-ng agent -n a1 -c conf -f /usr/local/flume/conf/flume-conf.properties	

hive安装:

准备:
	0. 安装 notepad++ 编辑配置文件
		插件 --> NppFTP --> Settings --> add new --> close --> connect
		
		链接 master 以后就可以下载 master 的文件到 windons 进行编辑
		保存后会自动上传到 master 替换原有的文件
	
	1. 安装好 hadoop 和 mysql
	2. 配置 hadoop 的代理用户
		编辑 core-site.xml 增加以下内容
			<property>
            	<name>hadoop.proxyuser.root.hosts</name>
            	<value>*</value>
            </property>
            
            <property>
            	<name>hadoop.proxyuser.root.groups</name>
            	<value>*</value>
            </property>
			
		使用 scp 命令发送到 slave1 和 slave2 覆盖原来的 core-site.xml 文件


安装:
	1. 下载、上传、解压和移动到 /usr/local/hive 文件夹
	2. 进入 /usr/local/hive/conf 目录,把 hive-default.xml.template 改名为 
	3. 编辑 hive-site.xml
		增加:
			<property>
				<name>system:java.io.tmpdir</name>
				<value>/usr/local/hive/tmp</value>
            </property>
            
            <property>
				<name>system:user.name</name>
				<value>root</value>
            </property>
			
		修改 metastore 信息:
			ConnectionDriverName
				com.mysql.jdbc.Driver
			ConnectionURL
				jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false&amp;allowPublicKeyRetrieval=true
			ConnectionUserName
				数据库登录名称
			ConnectionPassword
				数据库登录密码

	4. 进入 /usr/local/hive/conf/
	
		4.1 mv 修改 hive-env.sh.template 为 hive-env.sh
	    
		4.2 vi 编辑 hive-env.sh 文件
			使用:set number 命令,显示文本行号
			修改48行 HADOOP_HOME=/usr/local/hadoop
	
	5. 登录 mysql 检查是否有 hive 数据库,如果有删除

	
	6. 配置环境变量
		export HIVE_HOME=/usr/local/hive
		export PATH=$PATH:$HIVE_HOME/bin
		
	7. 拷贝 mysql 的驱动到 /usr/local/hive/lib 文件夹
	
	8. 初始化 MetaStore
		schematool -dbType mysql -initSchema
		
使用:
	HDFS 和 YARN 要先启动
	
	hiveserver2 启动服务器
		1. 查看日志确定是否启动成功:
			cat /tmp/root/hive.log
				Started HttpServer[hiveserver2] on port 10002
		2. 查看端口确定是否启动成功:
			netstat -anp | grep 10000
		
	启动客户端并以 root 身份登录 Hive:
		beeline -u jdbc:hive2://master:10000 -n root -p	
		
	使用 ctrl + c 关闭服务器和客户端

sqoop安装:

	1. 上传、解压和移动 /usr/local/sqoop
	2. 进入 sqoop 的 conf 文件夹
	3. 重命名 sqoop-env-template.sh 为 sqoop-env.sh
	4. 编辑 sqoop-env.sh,解注释并设置以下内容
		export HADOOP_COMMON_HOME=/usr/local/hadoop
		export HADOOP_MAPRED_HOME=/usr/local/hadoop
		export HIVE_HOME=/usr/local/hive
	5. 复制 mysql 驱动到 sqoop 的 lib 文件夹中
	6. 配置环境变量
		export SQOOP_HOME=/usr/local/sqoop
		export PATH=$PATH:$SQOOP_HOME/bin
	7. sqoop version	

zookeeper安装:

	1. 上传、解压和移动 下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
	2. 进入 conf 目录,重命名 zoo_sample.cfg 为 zoo.cfg
	3. 编辑 zoo.cfg
		修改 dataDir=/usr/local/zookeeper/data
		增加 server.1=master:2888:3888
			 server.2=slave1:2888:3888
			 server.3=slave2:2888:3888
	4. 在 zookeeper 目录下创建 data 文件夹
		在 data 文件夹内创建 myid 文件
			myid 内容为 1
	5. 配置环境变量
	6. 发送 zookeeper 和环境变量到 slave1 和 slave2
	7. 修改 slave1 和 slave2 的 myid 为 2 和 3
	8. 分别在使用 zkServer.sh start 启动 zookeeper
	9. zookeeper 的日志在启动命令的目录下,叫做 zookeeper.out

hbase安装:

下载安装
	下载解压Hbase安装包,解压并移到/usr/local/hbase

配置
	在hhbase-env.sh中指定JDK
		export JAVA_HOME=/usr/local/jdk
	在hbase-site.xml中添加
		<property>
				<name>hbase.rootdir</name>
				<value>hdfs://master:9000/hbase</value>
		</property>
		<property>
				<name>hbase.cluster.distributed</name>
				<value>true</value>
		</property>
		<property>
				<name>hbase.zookeeper.quorum</name>
				<value>master,slave1,slave2</value>
		</property>
	打开regionservers,修改为
		master
		slave1
		slave2

配置环境变量
	#HBase
	export HBASE_HOME=/usr/local/hbase
	export PATH=$PATH:$HBASE_HOME/bin
	更新环境变量
	source /etc/profile

将/usr/local/hbase和/etc/profile分发到各个节点
	scp -r /usr/local/hbase root@slaveXX:/usr/local
	scp -r /etc/profile root@slaveXX:/etc
	注意:将XX替换成数字

启动	
	如果HDFS没有启动,先启动HDFS
	然后在master上运行 start-hbase.sh

验证进程	
执行jps命令后应该能够看到以下进程
Hmaster
HRegionServer
HQuorumPeer

HBase监测网站
	master:16010


HA配置
	进入hbase-1.3.1/conf/目录,修改配置文件:
		cd hbase-1.3.1/conf/
		
		1)vi hbase-env.sh
		//配置JDK
		export JAVA_HOME=/usr/local/jdk
		
		//保存pid文件
		export HBASE_PID_DIR=/usr/local/hbase/pid
		
		//修改HBASE_MANAGES_ZK,禁用HBase自带的Zookeeper,因为我们是使用独立的Zookeeper
		export HBASE_MANAGES_ZK=false

		2)vi hbase-site.xml
			<configuration>
				<!-- 设置HRegionServers共享目录,请加上端口号 -->
				<property>
					<name>hbase.rootdir</name>
					<value>hdfs://master:9000/hbase</value>
				</property>

				<!-- 指定HMaster主机 -->
				<property>
					<name>hbase.master</name>
					<value>hdfs://master:60000</value>
				</property>

				<!-- 启用分布式模式 -->
				<property>
					<name>hbase.cluster.distributed</name>
					<value>true</value>
				</property>

				<!-- 指定Zookeeper集群位置 -->
				<property>
					<name>hbase.zookeeper.quorum</name>
					<value>master:2181,slave1:2181,slave2:2181</value>
				</property>

				<!-- 指定独立Zookeeper安装路径 -->
				<property>
					<name>hbase.zookeeper.property.dataDir</name>
					<value>/usr/local/zookeeper</value>
				</property>

				<!-- 指定ZooKeeper集群端口 -->
				<property>
					<name>hbase.zookeeper.property.clientPort</name>
					<value>2181</value>
				</property>
			</configuration>
		3)vi regionservers
			修改regionservers文件,因为当前是使用独立的Zookeeper集群,所以要指定RegionServers所在机器:
				master
				slave1
				slave2
		4)创建pid文件保存目录
			在/usr/local/hbase目录下:
				mkdir pid
	3、拷贝HBase到其他机器
		scp -r /usr/local/hbase root@slave1:/usr/local/
		scp -r /usr/local/hbase root@slave2:/usr/local/

spark安装:

	1. 下载、上传、解压和移动
	2. 进入 conf 文件夹进行配置
	3. 重命名 mv spark-env.sh.template spark-env.sh
	4. 编辑 spark-env.sh 增加
		export JAVA_HOME=/usr/local/jdk
		export SPARK_MASTER_HOST=master
		export SPARK_MASTER_PORT=7077
	5. 重命名 mv slaves.template slaves
	6. 编辑 slaves 文件
		删除自带的 localhost
		增加 slave1
 			 slave2
	7. 发送 spark 文件夹到 slave1 和 slave2
	8. /usr/local/spark/sbin/start-all.sh 启动 spark
		不能把 spark 加入环境变量,
		spark 中的一些脚本名字和 hadoop 中的同名
	9. jps 查看
		master:Master
		slave:Worker
	10. web 检测页面:http://master:8080/	

配置 HA
	1. 停止集群 /usr/local/spark/sbin/stop-all.sh
	2. 编辑 conf/spark-env.sh
		注释 SPARK_MASTER_HOST
		增加 export SPARK_DAEMON_JAVA_OPTS="
			 -Dspark.deploy.recoveryMode=ZOOKEEPER 
			 -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 
			 -Dspark.deploy.zookeeper.dir=/usr/local/spark"
	3. 把修改的 spark-env.sh 发送给 slave1 和 slave2
	4. 在每个节点启动 zookeeper
	5. 在 master 启动 spark
	6. 在 slave 手动启动 master
		/usr/local/spark/sbin/start-master.sh

执行 wordcount 
	1. 启动 spark shell 的本地模式
		/usr/local/spark/bin/spark-shell --master local[1]
			在本地执行 spark 程序,没有去集群执行
			local 分配的线程数

	2. 执行 word count:
		sc.textFile("file:///root/aaa.txt").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect
	
整合 HDFS
	1. 关闭 spark 集群
	2. 编辑 conf/spark-env.sh
		增加 export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
	3. 发送给 slave1 和 slave2
	4. 启动 HDFS 和 spark 集群
	5. 进入 spark-shell 的 Standalone 模式
		该模式是使用 spark 集群(Master 和 Worker)进行资源分配和任务调度
		
		/usr/local/spark/bin/spark-shell \
		--master spark://master:7077     \
		--executor-memory 1g           \
		--total-executor-cores 1
			指定 spark 集群地址,能够使用的内存为 1g,能够使用的 cpu 核心数为 1

	6. sc.textFile("/ip-action.dat").flatMap(_.split("\t")).map((_, 1)).reduceByKey(_+_).collect.foreach{println}
		输出所有的计算结果
	7. sc.textFile("/ip-action.dat").flatMap(_.split("\t")).map((_, 1)).reduceByKey(_+_).saveAsTextFile("/wc")
		保存计算结果到 hdfs

整合 Yarn
	1. 关闭 spark 集群
	2. 编辑 conf/spark-env.sh
		增加 export YARN_CONF_DIR=/usr/local/hadoop/etc/hadoop
	3. 发送给 slave1 和 slave2
	4. 编辑 vi /usr/local/hadoop/etc/hadoop/yarn-site.xml
		增加 <property>
				<name>yarn.nodemanager.vmem-check-enable</name>
				<value>false</value>
			 </property>
		 
		发送给 slave1 和 slave2
	5. 启动 YARN,不需要启动 spark 集群
	6. 进入 spark-shell 的 yarn 模式
		该模式不依赖 spark 集群,由 yarn 分配资源和进行任务调度
	
		/usr/local/spark/bin/spark-shell --master yarn --deploy-mode client

kafka安装:

1.下载、上传、解压和移动到 /usr/local/kafka
2.进入 /usr/local/kafka/config 目录
	编辑 vi server.properties
	master节点 borber.id =0
3. zookeeper.connect=master:2181,slave1:2181,slave2:2181
4. 配置环境变量,更新
5.发送 kafka 文件,到 slave1,slave2
6. 编辑 slave1和slave2 的/usr/local/kafka/config/server.properties  		
	slave1节点 borber.id =1
	slave2节点 borber.id =2
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值