hadoop_on_yarn+zookeeper+hive手把手一条龙教你搭建!!!

本文详细介绍了在多节点环境中搭建Hadoop HA集群、Zookeeper集群、YARN高可用集群以及Hive元数据服务的过程。包括时间同步、免密钥登录、软件包安装、配置环境变量、Hadoop配置调整、YARN HA配置、Hive与MySQL集成等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先准备好zookeeper,jdk,hadoop,hive的安装包
1.时间同步yum install ntp	
	启动NTP时间服务器:service ntpd start
	设置NTP开机自动启动:chkconfig ntpd on
	查看NTP是否正常运行:chkconfig | grep ntp
	
2、2.node1,2,3,4做免密钥登录
	ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa		
	cat ~/.ssh/id_dsa.pub > ~/.ssh/authorized_keys
	scp authorized_keys  node02:`pwd`																						
	cat id_dsa.pub >> authorized_keys	
	
3.配置jdk
	rpm -ivh /root/myapp/jdk-7u80-linux-x64.rpm																				
	export JAVA_HOME=/usr/java/jdk1.7.0_80
	export PATH=$PATH:$JAVA_HOME/bin
	
一、zookeeper的搭建
1、zookeeper集群搭建
	a) 将zookeeper.tar.gz上传到node2、node3、node4
	b) 解压到/opt
		tar -zxf zookeeper-3.4.6.tar.gz -C /opt
	c) 配置环境变量:
		export ZOOKEEPER_PREFIX=/opt/zookeeper-3.4.6
		export PATH=$PATH:$ZOOKEEPER_PREFIX/bin
		然后. /etc/profile让配置生效
	d) 到/opt/zookeeper-3.4.6/conf下
		复制zoo_sample.cfg为zoo.cfg
		cp zoo_sample.cfg  zoo.cfg
	e) 编辑zoo.cfg
		dataDir=/tmp/zookeeper改为			
		dataDir=/var/huawei/zookeeper/data										存放zookeeper数据的地方
		
		在clientPort=2181下添加:
		server.1=node2:2881:3881												2881投票端口   123他们互相通信走的端口
		server.2=node3:2881:3881												3881选举端口	
		server.3=node4:2881:3881

	f) node04创建/var/bjsxt/zookeeper/data目录,并在该目录下放一个文件:myid
	  在myid中写下当前zookeeper的编号
	  mkdir -p /var/bjsxt/zookeeper/data
	  echo 3 > /var/bjsxt/zookeeper/data/myid
	g) 将/opt/zookeeper-3.4.6通过网络拷贝到node2、node3上
		scp -r zookeeper-3.4.6/ node2:/opt
		scp -r zookeeper-3.4.6/ node3:/opt
	h) 在node2和node3上分别创建/var/bjsxt/zookeeper/data目录,
	并在该目录下放一个文件:myid
		node2:
		mkdir -p /var/bjsxt/zookeeper/data
		echo 1 > /var/bjsxt/zookeeper/data/myid
		node3:
		mkdir -p /var/bjsxt/zookeeper/data
		echo 2 > /var/bjsxt/zookeeper/data/myid
	
	i) 启动zookeeper  三台都要
		zkServer.sh start
		zkServer.sh start|stop|status
	j) 关闭zookeeper
		zkServer.sh stop
	l) 连接zookeeper
		zkCli.sh
	m) 退出zkCli.sh命令
		quit
		
二、hadoop的配置
	1.解压hadoop-2.6.5.tar.gz到/opt目录
		tar -zxf hadoop-2.6.5.tar.gz -C /opt
		向/etc/profile添加两行
		export HADOOP_HOME=/opt/hadoop-2.6.5
		export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
		
	2.在/opt/hadoop-2.6.5/etc/hadoop目录下做以下配置
	
		a)
		hadoop-env.sh
			中第25行配置
			export JAVA_HOME=/usr/java/jdk1.7.0_80
		
		b)
		slaves
			三个datanode所在的位置主机名称:
			node02
			node03
			node04
			
		c)
		core-site.xml
			<configuration>
			  <property>
				<name>fs.defaultFS</name>
				<value>hdfs://mycluster</value>
			  </property>
			  <property>
				<name>hadoop.tmp.dir</name>
				<value>/var/huawei/hadoop/ha</value>
			  </property>
			  <!-- 指定每个zookeeper服务器的位置和客户端端口号 -->
			  <property>
				 <name>ha.zookeeper.quorum</name>
				 <value>node02:2181,node03:2181,node04:2181</value>
			   </property>
			</configuration>
			
		d)
		hdfs-site.xml
			<configuration>
			  <!-- 指定block默认副本个数 -->
			  <property>
				<name>dfs.replication</name>
				<value>2</value>
			  </property>
			  <!-- 用于解析fs.defaultFS中hdfs://mycluster中的mycluster地址 -->
			  <property>
				<name>dfs.nameservices</name>
				<value>mycluster</value>
			  </property>
			  <!-- mycluster下面由两个namenode服务支撑 -->
			  <property>
				<name>dfs.ha.namenodes.mycluster</name>
				<value>nn1,nn2</value>
			  </property>
			  <!--指定nn1的地址和端口号,发布的是一个hdfs://的服务-->
			  <property>
				<name>dfs.namenode.rpc-address.mycluster.nn1</name>
				<value>node01:8020</value>
			  </property>
			  <property>
				<name>dfs.namenode.rpc-address.mycluster.nn2</name>
				<value>node02:8020</value>
			  </property>
			  <!--指定三台journal服务器的地址-->
			  <property>
				<name>dfs.namenode.shared.edits.dir</name>
				<value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
			  </property>
			  <!-- 指定客户端查找active的namenode的策略:
			  会给所有namenode发请求,以决定哪个是active的 -->
			  <property>
				<name>dfs.client.failover.proxy.provider.mycluster</name>
				<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
			  </property>
			  <!--在发生故障切换的时候,ssh到对方服务器,将namenode进程kill掉  kill -9  55767-->
				<property>
				  <name>dfs.ha.fencing.methods</name>
				  <value>sshfence</value>
				</property>

				<property>
				  <name>dfs.ha.fencing.ssh.private-key-files</name>
				  <value>/root/.ssh/id_dsa</value>
				</property>
			  <!-- 指定journalnode在哪个目录存放edits log文件 -->
			  <property>
				<name>dfs.journalnode.edits.dir</name>
				<value>/var/huawei/hadoop/ha/jnn</value>
			  </property>
			<!--启用自动故障切换-->
			<property>
			   <name>dfs.ha.automatic-failover.enabled</name>
			   <value>true</value>
			 </property>

			</configuration>
	再把/opt/hadoop-2.6.5/etc/hadoop/*scp到其他的node上

	3、启动HA的hadoop
		第一次启动才需要的  
		a) 在node1\node2\node3上启动三台journalnode   
			hadoop-daemon.sh start journalnode
		b) 任意选择node1或者node2,格式化HDFS
		
			hdfs namenode -format  
			
			格式化后,启动namenode进程
			hadoop-daemon.sh start namenode
		c) 在另一台node2或者node1上同步元数据
			hdfs namenode -bootstrapStandby
		
		d) node2,node3,node4一台上初始化zookeeper上的内容
			hdfs zkfc -formatZK
	
		e) 启动hadoop集群,可在node1到node4这四台服务器上任意位置执行
			start-dfs.sh
	4、zookeeper操作
		在node2或者node3或者node4上运行
		zkCli.sh
		
		ls /hadoop-ha/mycluster 查看临时文件
		get /hadoop-ha/mycluster/ActiveStandbyElectorLock 查看临时文件的内容
		
		退出zkCli.sh
		quit
		
	5、停止集群:
		首先
		stop-dfs.sh
		其次,停止zookeeper集群
		node2、node3、node4上执行:
		zkServer.sh stop
	
	
三、在node03,node04搭建yarn
		1、到/opt/hadoop-2.6.5/etc/hadoop这个目录
			复制一份配置文件
			cp mapred-site.xml.template   mapred-site.xml
			
			a)
			mapred-site.xml
				classic经典的老版本 没有将资源调用和内存调用分开
				local本地客户端模拟进行
				yarn
				<configuration>
						<property>
								<name>mapreduce.framework.name</name>
								<value>yarn</value>
						</property>
				</configuration>
			b)
			etc/hadoop/yarn-site.xml
				<configuration>
				<!--让yarn启动服务支持map任务和reduce任务container之间的通信,洗牌 -->
						<property>
								<name>yarn.nodemanager.aux-services</name>
								<value>mapreduce_shuffle</value>
						</property>

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

				<!--指代ResourceManager HA的两台RM的逻辑名称 -->
						<property>
								<name>yarn.resourcemanager.cluster-id</name>
								<value>rmhacluster1</value>
						</property>     

				<!--指定该高可用ResourceManager下的两台ResourceManager的逻辑名称-->
						<property>
								<name>yarn.resourcemanager.ha.rm-ids</name>
								<value>rm1,rm2</value>
						</property>

				<!--指定第一台ResourceManager服务器所在的主机名称 -->
						<property>
								<name>yarn.resourcemanager.hostname.rm1</name>
								<value>node03</value>
						</property>
						<property>
								<name>yarn.resourcemanager.hostname.rm2</name>
								<value>node04</value>
						</property>

				<!--指定resourcemanager的web服务器的主机名和端口号-->
						<property>
								<name>yarn.resourcemanager.webapp.address.rm1</name>
								<value>node03:8088</value>
						</property>
						<property>
								<name>yarn.resourcemanager.webapp.address.rm2</name>
								<value>node04:8088</value>
						</property>

				<!--做ResourceManager HA故障切换用到的zookeeper集群地址 -->
						<property>
								<name>yarn.resourcemanager.zk-address</name>
								<value>node02:2181,node03:2181,node04:2181</value>
						</property>
				</configuration>
				
	2.把node03上配置的这些cp到node04
	3.在node3或node4上执行:
		start-yarn.sh
		启动resource manager和nodemanager
		另一个resourcemanager需要在另一台主机上执行以下命令启动:
		yarn-daemon.sh start resourcemanager

	4.停止的时候在node3或node4上执行
		stop-yarn.sh
		停止resource manager和nodemanager
		另一个resourcemanager需要在另一台主机上执行以下命令启动:
		yarn-daemon.sh stop resourcemanager

四、安装mysql
	1、安装mysql
		yum install mysql-server
	2、开启mysql
		service mysqld start
	3、设置开机启动
		chkconfig mysqld on
	4、进入mysql
		mysql
	5、修改mysql权限:并设置密码为123
		GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
	6、删除多余会对权限造成影响的数据
		delete from user where host!='%';
	7、刷新权限
		flush privileges;

五、配置错了mysql,登录不上如何卸载
	1、关闭mysql服务
		service mysqld stop
	2、检查是否安装了MySQL组件。

		[root@node01 ~]# rpm -qa | grep -i mysql
	 
		perl-DBD-MySQL-4.013-3.el6.x86_64
		mysql-server-5.1.73-8.el6_8.x86_64
		mysql-libs-5.1.73-8.el6_8.x86_64
		mysql-5.1.73-8.el6_8.x86_64
	
	3、卸载以上组件
		rpm -e --nodeps perl-DBD-MySQL-4.013-3.el6.x86_64
		rpm -e --nodeps mysql-server-5.1.73-8.el6_8.x86_64
		rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64
		rpm -e --nodeps mysql-5.1.73-8.el6_8.x86_64
	4、收集MySQL对应的文件夹信息
		[root@node01 ~]# whereis mysql
		mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
	5、删除以上mysql文件夹
		rm-fr /usr/bin/mysql
		rm-fr /usr/lib64/mysql
		rm-fr /usr/share/mysql 
		rm-fr /usr/share/man/man1/mysql.1.gz
	6、使用find命令查看MySQL数据库相关的文件,彻底删除MySQL。
		[root@node01 ~]# find / -name mysql
		/usr/lib64/mysql
		/usr/lib64/perl5/auto/DBD/mysql
		/usr/lib64/perl5/DBD/mysql
		/usr/bin/mysql
		/usr/share/mysql
		/var/lib/mysql
		/var/lib/mysql/mysql
	7、删除以上相关文件
		还是使用
		rm -fr
	8、删除mysql用户及用户组
		[root@node01 ~]# more /etc/passwd | grep mysql
		mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
		[root@node01 ~]# more /etc/passwd | grep mysql
		mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
		[root@node01 ~]#  more /etc/group | grep mysql
		mysql:x:27:
		
	卸载完成重新安装即可
	
六、node03.node04的hive安装
	node03作为服务端	node04作为客户端
	1、解压到opt
		tar -zxf apache-hive-2.3.4-bin.tar.gz -C /opt
	2、到node03--->>>/opt/apache-hive-2.3.4-bin/conf
		cp hive-default.xml.template  hive-site.xml
		修改hive-site.xml
		
		<configuration>
		<!--hdfs上的路径 -->
		<property>
		  <name>hive.metastore.warehouse.dir</name>
		  <value>/user/hive/warehouse</value>
		</property>
		<!--mysql元数据存放的位置 -->
		<property>
		  <name>javax.jdo.option.ConnectionURL</name>
		  <value>jdbc:mysql://node01/hive?createDatabaseIfNotExist=true</value>
		</property>
		<!--驱动 -->
		<property>
		  <name>javax.jdo.option.ConnectionDriverName</name>
		  <value>com.mysql.jdbc.Driver</value>
		</property>
		<!--mysql用户名 -->
		<property>
		  <name>javax.jdo.option.ConnectionUserName</name>
		  <value>root</value>
		</property>
		<!--mysql密码 -->
		<property>
		  <name>javax.jdo.option.ConnectionPassword</name>
		  <value>123</value>
		</property>
		</configuration>
	4、到node04--->>>/opt/apache-hive-2.3.4-bin/conf
		cp hive-default.xml.template  hive-site.xml
		修改hive-site.xml
		
		<configuration>
		<!--hdfs上的路径 -->
		<property>
		  <name>hive.metastore.warehouse.dir</name>
		  <value>/user/hive/warehouse</value>
		</property>
		<!--连接node03服务端,因为node03上有mysql相关信息,所以这儿不用配置-->
		<property>  
		  <name>hive.metastore.uris</name>  
		  <value>thrift://node03:9083</value>  
		</property> 
		</configuration>

	5、初始化mysql上的数据表
		schematool -dbType mysql -initSchema

	6、到node03上去启动元数据服务集点----该方法为阻塞方法
		hive --service metastore
	
	7、到node04上执行
		hive进入客户端
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值