Hadoop集群搭建-HA模式

Hadoop集群搭建-HA模式

  • 基础设施
  • Hadoop配置
  • 初始化运行
  • 简单使用
  • 权限管理

基础设施

  1. 设置网络(设置IP ;设置主机名;设置本机的ip到主机名的映射关系)
  2. 关闭防火墙,关闭 selinux
  3. 做时间同步
  4. 安装JDK
  5. ssh免密: NameNode节点互相免密

Hadoop配置

  1. 路径规划:
    一般应用软件安装在/opt目录下
  2. Hadoop环境变量:
  3. 修改配置文件并分发到其他节点:
		cd $HADOOP_HOME/etc/hadoop
		vi hadoop-env.sh
			export JAVA_HOME=/usr/java/default
		vi core-site.xml
			# NameNode集群
			
			  fs.defaultFS</name>
			  hdfs://mycluster</value>
			</property>
			# zkfc与zk交互地址
			
			  ha.zookeeper.quorum</name>
			  node02:2181,node03:2181,node04:2181</value>
			</property>
		vi hdfs-site.xml
			# 设置副本数
			
				dfs.replication</name>
				2</value>
			</property>
			# NN的元数据存放位置
			                                                                               
				dfs.namenode.name.dir</name>                                                   
				/var/bigdata/hadoop/ha/dfs/name</value>                                       
			</property>        
			# DN的数据存放位置
			                                                                               
				dfs.datanode.data.dir</name>                                                   
				/var/bigdata/hadoop/ha/dfs/data</value>                                       
			</property>
			# 以下是自定义NameNode集群,一对多(mycluster有多个NameNode),逻辑到物理节点的映射
			
			  dfs.nameservices</name>
			  mycluster</value>
			</property>
			
			  dfs.ha.namenodes.mycluster</name>
			  nn1,nn2</value>
			</property>
			# RPC地址
			
			  dfs.namenode.rpc-address.mycluster.nn1</name>
			  node01:8020</value>
			</property>
			
			  dfs.namenode.rpc-address.mycluster.nn2</name>
			  node02:8020</value>
			</property>
			# WebUI的地址
			
			  dfs.namenode.http-address.mycluster.nn1</name>
			  node01:50070</value>
			</property>
			
			  dfs.namenode.http-address.mycluster.nn2</name>
			  node02:50070</value>
			</property>
			# 以下是JN在哪里启动(为mycluster提供数据传输服务)
			
			  dfs.namenode.shared.edits.dir</name>
			  qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
			</property>
			# 以下是JN数据存放地址
			
			  dfs.journalnode.edits.dir</name>
			  /var/bigdata/hadoop/ha/dfs/jn</value>
			</property>
			# HA角色切换的代理类和实现方法,我们用的ssh免密(比如:node01通过ssh跳转到node02等进行操作)
			
			  dfs.client.failover.proxy.provider.mycluster</name>
			  org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
			</property>
			
			  dfs.ha.fencing.methods</name>
			  sshfence</value>
			</property>
			
			  dfs.ha.fencing.ssh.private-key-files</name>
			  /root/.ssh/id_dsa</value>
			</property>
			#开启自动化: 启动zkfc
			
			  dfs.ha.automatic-failover.enabled</name>
			  true</value>
			</property>
		vi slaves
			node02
			node03
			node04
  1. 搭建zk集群
    zookeeper集群搭建
    注意:如果按照下面更改完用户权限之后,用户与zk资源也要绑定在一起!

初始化运行

1)先启动JN:hadoop-daemon.sh start journalnode
2)选择一个NN 做格式化:hdfs namenode -format
3)启动这个格式化的NN,以备另外一台同步: hadoop-daemon.sh start namenode
4)在另外一台机器中: hdfs namenode -bootstrapStandby
5)格式化zk: hdfs zkfc -formatZK
6)start-dfs.sh

简单使用

上传:hdfs dfs -mkdir /userhadoop
Web:node01:50070

权限管理

hdfs类unix和linux,具有权限系统
node01~node04:

  1. 添加用户:root
useradd god
passwd god
  1. 讲资源与用户绑定
	chown -R god  src(资源路径)
	chown -R god /opt/hadoop-2.6.5
	chown -R god /var/bigdata/hadoop
  1. 切换到god去启动 start-dfs.sh < 需要免密
    密钥权限必须是600,比较坑
    -rw------- 1 god god 600 Jun 14 10:57 authorized_keys
	su god
	*我们是HA模式:免密的2中场景都要做的
	ssh localhost   >> 为了拿到.ssh
	node01~node02:
		cd /home/god/.ssh
		ssh-keygen -t dsa -P '' -f  ./id_dsa
	node01:
		ssh-copy-id -i id_dsa node01   
		ssh-copy-id -i id_dsa node02
		ssh-copy-id -i id_dsa node03
		ssh-copy-id -i id_dsa node04
	node02
		cd /home/god/.ssh
		ssh-keygen -t dsa -P '' -f  ./id_dsa
		ssh-copy-id -i id_dsa node01
		ssh-copy-id -i id_dsa node02
	hdfs-site.xml
		
			dfs.ha.fencing.ssh.private-key-files</name>
			/home/god/.ssh/id_dsa</value>
		</property>
	分发给其他节点

god : start-dfs.sh

你可能感兴趣的:(Hadoop集群搭建-HA模式)