在虚拟机中搭建Hadoop环境

在虚拟机中搭建Hadoop环境

一、Hadoop安装前的准备工作

1、安装centOS操作系统
	安装过程省略
	安装结束后进入到系统中
	新建两个目录
	·mkdir /tools       工具目录
	 mkdir /training    安装目录
2、安装JDK
	上传jdk到tools目录下
	 tar -zvxf jdk-7u80-linux-x64.tar.gz  -C /training/
	 配置环境变量:
	 vi ~/.bash_profile
	 添加如下信息
	 export JAVA_HOME=/training/jdk1.8.0_171
	 export JRE_HOME=$JAVA_HOME/jre
	 export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
	 export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin;
	 让环境变量生效
	 source ~/.bash_profile
	 验证jdk是否安装成功
	 java -version
	 
3、关闭防火墙(CentOS7下)
	systemctl stop firewalld.service
	systemctl disable firewalld.service
		
4、配置主机名(CentOS7下)
	hostnamectl --static set-hostname niit
	说明:--static 参数代表永久生效

二、分析Hadoop的目录结构

安装hadoop:
	上传hadoop-2.7.3.tar.gz
	tar -zvxf hadoop-2.7.3.tar.gz -C /training/
	cd /training/hadoop-2.7.3/
	
	配置环境变量:
		vi ~/.bash_profile
		添加如下信息:
		export HADOOP_HOME=/training/hadoop-2.7.3
		export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
		
		说明:$PATH 类似于window下的Path本身的东西,:后面表示追加信息
		
		让环境变量生效:
		source ~/.bash_profile
		
		验证是否生效:
			执行:hdfs 有相关信息出现即可

三、三种方式安装

1、本地模式 1台
	特点:没有HDFS,只能进行MapReduce计算,而且只操作Linux上的文件
	验证下:
	vi hadoop-env.sh
	配置Java环境变量:
		export JAVA_HOME=/training/jdk1.8.0_171
	测试前需要创建测试目录和测试文件:
		mkdir ~/input
		vi ~/input/test.txt
		输入如下内容:
			I love Guiyang
			I love Guizhou
			Guiyang is the capital of Guizhou
		保存退出
		进入到:cd /training/hadoop-2.7.3/share/hadoop/mapreduce/目录下
		执行:~/output 不需要事先存在,存在会报错
		hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount ~/input/test.txt ~/output
		查看结果:
			MapReduce程序的执行结果会默认按照英文单词的字典顺序进行了排序
			
			cd ~/output
			cat part-r-00000  _SUCCESS

(出现未知主机名称错误。解决: vi /etc/hosts , 添加192.168.127.128 niit )

2、伪分布模式  1台
	特点:具备HDFS全部功能
	HDFS:NameNode + DataNode
	Yarn:ReourceManager + NodeManager
	配置四个文件(hadoop-2.7.3/etc/hadoop):参考讲义进行配置
	hdfs-site.xml:原则是:一般有几个数据节点就配置几个,但是最多不能超多3
		<!--表示数据块的冗余度 默认为3-->
		<property>
		   <name>dfs.replication</name>
		   <value>1</value>
		</property>
		
		<!--表示是否开启HDFS权限检查,默认是true-->
		<property>
		   <name>dfs.permissions</name>
		   <value>false</value>
		</property>
		
	core-site.xml:
		<!--配置NameNode的通讯地址 9000 是RPC默认的通信端口-->
		<property>
		    <name>fs.defaultFS</name>
		    <value>hdfs://niit04:9000</value>
		</property>			
		<!--HDFS数据保存在Linux的哪个目录,默认值是Linux的tmp目录  必须配置,否则会报错/training/hadoop-2.7.3/tmp 必须事先存在-->
		<property>
		    <name>hadoop.tmp.dir</name>
		    <value>/training/hadoop-2.7.3/tmp</value>
		</property>

	mapred-site.xml:
	    这个文件事先是不存在的,需要复制一份
        cp mapred-site.xml.template mapred-site.xml

        <!--配置MR的运行框架-->
	    <property>
			<name>mapreduce.framework.name</name>
			<value>yarn</value>
	    </property>
	    
	yarn-site.xml:
		<!--Yarn的主节点RM的位置-->
		<property>
		   <name>yarn.resourcemanager.hostname</name>
		   <value>niit04</value>
		</property>

		<!--MapReduce运行方式:shuffle洗牌-->
		<property>
		   <name>yarn.nodemanager.aux-services</name>
		   <value>mapreduce_shuffle</value>
		</property>	
	
	格式化:HDFS(NameNode)
		
		mkdir /training/hadoop-2.7.3/tmp
		
		hdfs namenode -format
	
		成功日志:
			 common.Storage: Storage directory /training/hadoop-2.7.3/tmp/dfs/name has been successfully formatted.
	


	启动hadoop环境
		start-all.sh
		(如果出现找不到java_home错误。解决方法:
			vi hadoop-env.sh  修改成绝对路径 
				export JAVA_HOME=/training/jdk1.8.0_171
				export HADOOP_CONF_DIR=/training/hadoop-2.7.3/etc/hadoop

	访问:web界面进行验证
		  HDFS:http://niit04:50070
		  Yarn:http://niit04:8088
    停止:
		stop-all.sh
	
	(*)先配置免密码登录
	(*)再配置免密码登录  (画图原理)

3、全分布模式(画图规划 3台)
	一、准备工作
		1、所有主机安装jdk
		2、所有主机都需要关闭防火墙
		3、所有主机都需要配置主机名映射关系  vi /etc/hosts
		4、配置免密码登录(配置两两之间的免密码登录)
			//所有的机器都需要产生一对密钥:公钥和私钥
			ssh-keygen -t rsa
			
			所有主机需要执行
			ssh-copy-id -i .ssh/id_rsa.pub root@niit01
			ssh-copy-id -i .ssh/id_rsa.pub root@niit02
			ssh-copy-id -i .ssh/id_rsa.pub root@niit03
			
		5、保证每台机器的时间是一样的
			如果不一样的话,我们在执行MapReduce程序的时候可能会存在问题
			解决方案:
				1)搭建一个时间同步的服务器,网上很多教程可以使用
				2)使用putty工具,可以简单实现这个功能:
					date -s 2018-07-30 后面必须敲一个回车
					
	二、在主节点上进行安装配置(niit01)
		(*)上传hadoop安装包,解决配置环境变量
			 tar -zvxf hadoop-2.7.3.tar.gz -C /training/
			 同时设置:niit01 niit02 niit03
				 HADOOP_HOME=/training/hadoop-2.7.3
				 export HADOOP_HOME
				 PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
				 epxort PATH
		(*)修改配置文件
			 vi hadoop-env.sh  设置JDK的路径
			 
			 hdfs-site.xml:
				<!--表示数据块的冗余度 默认为3-->
				<property>
				   <name>dfs.replication</name>
				   <value>2</value>
				</property>
				
			 core-site.xml:
				<!--配置NameNode的通讯地址 9000 是RPC默认的通信端口-->
				<property>
					<name>fs.defaultFS</name>
					<value>hdfs://niit01:9000</value>
				</property>			
				<!--HDFS数据保存在Linux的哪个目录,默认值是Linux的tmp目录  必须配置,否则会报错
				/training/hadoop-2.7.3/tmp 必须事先存在-->
				<property>
					<name>hadoop.tmp.dir</name>
					<value>/training/hadoop-2.7.3/tmp</value>
				</property>
				
			 mapper-site.xml:
				<!--配置MR的运行框架-->
				<property>
					<name>mapreduce.framework.name</name>
					<value>yarn</value>
				</property>
				
			 yarn-site.xml:
					<!--Yarn的主节点RM的位置-->
					<property>
					   <name>yarn.resourcemanager.hostname</name>
					   <value>niit01</value>
					</property>

					<!--MapReduce运行方式:shuffle洗牌-->
					<property>
					   <name>yarn.nodemanager.aux-services</name>
					   <value>mapreduce_shuffle</value>
					</property>	
			savles:
				niit02
				niit03
		(*)格式化nameNode
				hdfs namenode -format
				日志:
				common.Storage: Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted.
		(*)将niit01上的hadoop环境复制到niit02 niit03
				scp -r hadoop-2.7.3/ root@niit02:/training/
				scp -r hadoop-2.7.3/ root@niit03:/training/
		(*)在主节点(niit01)上启动hdfs
			start-all.sh
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值