hadoop的学习历程

本文详细介绍了Hadoop集群的快速入门与搭建过程,包括虚拟机网络配置、免密登录设置、Hadoop HA配置及Zookeeper安装。同时,文章还涵盖了Hive的安装步骤。

1.0 hadoop的认识

the apache hadoop project develops open-source software  for reliable, scalable, distributed compting.
主要有四个组件:
Common:The common utilities that support the other Hadoop modules.
HDFS:Hadoop Distributed File System
YRAN:job 的资源调度平台
MapReduce:分析计算框架
HDFS是一个分布式的存储系统,
补充:一个安装虚拟机的只是点,VMnet0:用于虚拟桥接网络下的虚拟交换机;VMnet8:用于NAT虚拟网络下的虚拟交换机。

1.1.0 HDFS集群的快速入门

hdfs集群中的机器扮演者不同的角色,分为两类的核心角色:
	1.主节点:有一台,叫namenode
	2.从节点:有无数台,叫datanode
	准备工作:主机名,ip,映射,jdk.
	先安装好一台虚拟机,然后克隆出两台,因为linux系统会使用udev动态管理设备文件,虚拟机会自动为网卡生成新的mac地址,因为Linux不允许存在相同的mac地址,所以会在网卡eth0上加1变成eth1,为了能联通网络就要修改
	第一步:先查看下主机名
	vi  /etc/sysconfig/network   修改主机名就可以了。
	第二步:去这个目录下修改网卡的名字   /etc/udev/rules.d/70-persistent-net.rules
	第三步:修改ip,删除UUID和HWADDR 然后重启虚拟机就OK ,因为删除网卡信息虚拟机就不会为你创建新的网卡了,他会探寻已知的网卡,这样集群才能实现网络互通!
	第四步:查看下防火墙,要全部关闭。

入坑指南

	搞了一天半的时间终于把集群搭建起来了,中间遇到了好多的问题和坑,好久没有配置了,很多东西都忘记了,然后各种报错,各种问题。
	从头开始讲吧,先安装好一台虚拟机,克隆是两台。
	先配置虚拟机的网路,配置子网ip,0网段的,网关设成2,
	先用root用户登录,去设置/etc/sudoers这个文件,把 hadoop用户添加进去,就可以使用root用户的权限了。
	查看本机的ip,把ip设置为静态的,不然每次启动ip会不一样,两种方法:
	第一种:setup命令,直接点就ok,网关和V8路由器网关要一样,
	第二种:vi /etc/sysconfig/network-scripts/ifcfg-eth0(root用户)
	修改ip,(其它两台要删除UUID和hwaddr,并进去/etc/udev/rules.d/70-persistent-net.rules把eth1修改成eth0),然后保存并退出。
	修改主机名:/etc/sysconfig/network
	做主机名跟ip映射:/etc/hosts
	三台都做好以后
	做免密登录,记得要在hadoop的home目录下输入命令,ssh-keygen -t rsa 三个回车即可;分发秘钥,ssh-copy-id  用户名@主机名/目录
	如果直接ssh-copy-id 主机名 的话会默认root用户,你远程会登陆到对方root用户。做好免密登录之后就可以安装软件了。
	注意:先要查看一下,已经存在的jdk版本,因为linux系统会自带一个jdk
	sudo rpm -qa|grep java,然后通过sudo rpm -y remove 包名卸载掉全部。
	一:压缩包,直接解压到指定的目录,然后配置环境变量就OK
		配置环境变量,可以配/home/hadoop/.bash_profile也可以配置/etc/profile/。
		解压命令:tar -zxvf 包名 -C app
	二:解压hadoop目录,配置环境,变量,再配置hadoop-env.sh,修改jdk的目录
	直接配置高可用吧。
	先的安装zookeeper,解压,配置环境变量,什么的都不用说了,还需要配置两个东西,
	1.配置conf下的zoo.cfg
	修改一下dataDir这个目录,这个目录不会自己创建,需要手动去你指定的目录下创建这个文件夹。里面放一个文件叫myid,就是代表zookeeper的id是多少,选举要用。
	在最后面指定,server.1的主机是那台,内部端口,外部端口是多少
	server.1=gec-hadoop-master:2888:3888(三台都要写,不然不知道server.1是谁。。。)
	去创建dataDir指定的目录,然后把myid写进去。
	zookeepeer就搞定了。
	下面配置hadoop的HA
fs.defaultFS hdfs://ns1/ hadoop.tmp.dir /usr/hadoop/hdpdata
              <!-- 指定zookeeper地址 -->
              <property>
                       <name>ha.zookeeper.quorum</name>
                       <value>tourbis:2181,dfs-node02:2181,dfs-node03:2181</value>
                 </property>

              <property>
		     <name>hadoop.proxyuser.root.hosts</name>
		     <value>*</value>
	 </property>

	 <property>
		         <name>hadoop.proxyuser.root.groups</name>
		         <value>*</value>
	 </property>
	<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
		<configuration>
		<property>
		<name>dfs.nameservices</name>
		<value>ns1</value>
		</property>
		<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
		<property>
		<name>dfs.ha.namenodes.ns1</name>
		<value>nn1,nn2</value>
		</property>
		<!-- nn1的RPC通信地址 -->
		<property>
		<name>dfs.namenode.rpc-address.ns1.nn1</name>
		<value>gec-hadoop-master:9000</value>
		</property>
		<!-- nn1的http通信地址 -->
		<property>
		<name>dfs.namenode.http-address.ns1.nn1</name>
		<value>gec-hadoop-master:50070</value>
		</property>
		<!-- nn2的RPC通信地址 -->
		<property>
		<name>dfs.namenode.rpc-address.ns1.nn2</name>
		<value>gec-hadoop-slave01:9000</value>
		</property>
		<!-- nn2的http通信地址 -->
		<property>
		<name>dfs.namenode.http-address.ns1.nn2</name>
		<value>gec-hadoop-slave01:50070</value>
		</property>
		<!-- 指定NameNode的edits元数据在JournalNode上的存放位置 -->
		<property>
		<name>dfs.namenode.shared.edits.dir</name>
		<value>qjournal://gec-hadoop-master:8485;gec-hadoop-slave01:8485;gec-hadoop-slave02:8485/ns1</value>
		</property>
		<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
		<property>
		<name>dfs.journalnode.edits.dir</name>
		<value>/home/hadoop/app/journaldata</value>
		</property>
		<!-- 开启NameNode失败自动切换 -->
		<property>
		<name>dfs.ha.automatic-failover.enabled</name>
		<value>true</value>
		</property>
		<!-- 配置失败自动切换实现方式 -->
		<property>
		<name>dfs.client.failover.proxy.provider.ns1</name>
		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
		</property>
		<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
		<property>
		<name>dfs.ha.fencing.methods</name>
		<value>
				sshfence
				shell(/bin/true)
		</value>
		</property>
		<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
		<property>
		<name>dfs.ha.fencing.ssh.private-key-files</name>
		<value>/home/hadoop/.ssh/id_rsa</value>
		</property>
		<!-- 配置sshfence隔离机制超时时间 -->
		<property>
		<name>dfs.ha.fencing.ssh.connect-timeout</name>
		<value>30000</value>
		</property>
		</configuration>
	有点长,自己改改就好了,分发到另外两台,连同zookeeper一起,还有环境变量,最后要修改myid。
	好了之后就可以启动zookeeper了,再启动jounalnode(三台都启动)  然后再格式化,namenode在一台上格式化就ok了,把hdpdata这个目录分发过去。
	到其中一台namenode上执行hdfs zkfc -formatZK
	然后启动集群。查看页面是否正常访问。

安装hive

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值