Hadoop完全分布式搭建
准备:
一、虚拟机
Windwos:VMware Workstation Pro
安装:
	** 创建空虚拟机
	** 安装虚拟机时的资源规划
		Linux版本:Centos 6.8 或 CentOS 7.2 1611内核
		内存:
			linux01:
			内存:4G
			CPU:1个 2core
			linux02:
			内存:2G
			CPU:1个 1core
			linux03
			内存:2G
			CPU:1个 1core
** 虚拟机网络设置
		** $ su - root
			输入密码
		** # vi /etc/sysconfig/network-scripts/ifcfg-eth0
			IPADDR=192.168.216.20
			NETMASK=255.255.255.0
			GATEWAY=192.168.216.2
			DNS1=192.168.216.2
			DNS2=8.8.8.8
			BOOTPROTO=static
			ONBOOT=yes
		** 重启网卡服务
			CentOS6.8: # service network restart
			CentOS7.2: # systemctl restart network.service
		** CRT远程连接Linux
		** 禁用SELinux
			** Selinux:linux安全管理工具
			** # vi /etc/sysconfig/selinux
			** 编辑改动如下:
				SELINUX:disable
		** 禁用防火墙
			** CentOS 6.8
				iptables
				# service iptables stop
				# chkconfig iptables off
			** CentOS 7.2
				# systemctl stop firewalld.service
				# systemctl disable firewalld.service
		** ping外网测试
		** visudo
			改动如下:
				admin	ALL=(ALL)	NOPASSWD: ALL
		** 修改主机名(下节课讲解)
			CentOS 6.8:
				$ sudo vi /etc/sysconfig/network
			CentOS 7.2:
				$ sudo vi /etc/hostname
		** 修改ip与主机名的映射关系
			$ sudo vi /etc/hosts
			
			192.168.216.20 linux01
			192.168.216.21 linux02
			192.168.216.22 linux03
		** 安装JDK
			** 解压
			** 配置环境变量
				#JAVA_HOME
				JAVA_HOME=/home/admin/modules/jdk1.8.0_121
				export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
				export PATH=$PATH:$JAVA_HOME/bin
			** 删除OpenJDK(CentOS 自带的JAVA环境)
			** source刚才配置好的系统环境变量文件
				$ source /etc/profile
			** 验证
				$ java -version
		** 克隆
			将linux01,克隆出linux02,linux03
			** 先关闭虚拟机
			** 完成克隆
			** 修改后两台机器的网络配置
				** 主机名
					$ sudo vi /etc/sysconfig/network
				** 网卡MAC地址
					$ sudo vi /etc/udev/rules.d/70-persistent-net.rules
				** IP地址	
					$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
			** 重启机器(注意,克隆出来的两台机器都要配置)
			** 使用CRT连接3台机器,测试
			
		** 配置SSH无秘钥访问(如下操作,需要在3台机器中分别执行)
			** 生成密钥
				$ ssh-keygen -t rsa
			** 分发公钥
				$ ssh-copy-id linux01;  ssh-copy-id linux02; ssh-copy-id linux03;
			** ssh访问测试
				ssh linux01
				ssh linux02
				ssh linux03
		** 关闭后两台机器的界面
			CentOS6:
				$ sudo vi /etc/inittab
			CentOS7:
				$ sudo systemctl set-default multi-user.target
				
		** 安装VMTool
		
		** 配置时间服务器
			** 检查时区
				$ date -R
				** 如果时区不是+0800东八区区时的话,需要手动纠正
					$ sudo rm -rf /etc/localtime
					$ sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
			** 检查软件包
				如果ntp工具不存在,则需要使用yum安装
					$ sudo rpm -qa | grep ntp
					如果不存在则安装:
					$ sudo yum -y install ntp
			** 先以网络时间为标准,纠正集群的时间服务器的时间
				$ sudo ntpdate pool.ntp.org
			** 修改ntp配置文件
				$ sudo vi /etc/ntp.conf
				
				修改为如下:
				#允许192.168.216.x网段上的所有机器和当前这台机器进行实践同步
				restrict 192.168.216.0 mask 255.255.255.0 nomodify notrap
				#当该节点丢失网络连接,依然可以作为时间服务器为集群其他节点提供时间同步服务
				server 127.127.1.0
				fudge 127.127.1.0 stratum 10
				# Use public servers from the pool.ntp.org project.
				# Please consider joining the pool (http://www.pool.ntp.org/join.html).
				#server 0.centos.pool.ntp.org iburst
				#server 1.centos.pool.ntp.org iburst
				#server 2.centos.pool.ntp.org iburst
				#server 3.centos.pool.ntp.org iburst
			** 重启ntp服务
				CentOS6:
					$ sudo chkconfig ntpd on
					$ sudo service ntpd restart
				CentOS7:
					$ sudo systemctl enable ntpd.service
					$ sudo systemctl restart ntpd.service
			** 使用从节点,手动同步时间(后面两台机器都要操作)
					$ sudo ntpdate linux01
			** 设置时间同步任务
					# crontab -e 编辑时间任务
					(尖叫提示:上面的#号代表root用户,下边的#号代表shell注释)
					# .------------------------------------------minute(0~59)
					# | .----------------------------------------hours(0~23)
					# | | .--------------------------------------day of month(1~31)
					# | | | .------------------------------------month(1~12)
					# | | | | .----------------------------------day of week(0~6)
					# | | | | | .--------------------------------command
					# | | | | | |
					# | | | | | |
					*/10 * * * * /usr/sbin/ntpdate linux01
					
					# crontab -l 查看时间任务
			** 重启定时任务
				CentOS6:
					# service crond restart
				CentOS7:
					# systemctl restart crond.service
			** 虚拟机定期备份,一定要做!!!!!
				 先关机:
				 $ sudo shutdown -h now
				 按照时间新建文件夹,将已经安装完成的3台虚拟机,备份到该文件夹中。
Hadoop完全分布式的部署
	** Hadoop介绍
		** HDFS:分布式存储文件
			角色:NameNode和DataNode
		** YARN:分布式资源调度框架(Hadoop2.x以上才引用)
			角色:ResourceManager和NodeManager
		** MapReduce:分布式数据处理框架
	** 解压Hadoop
		tar -zxf xxx.tar.gz -C xxxx
	** Hadoop完全分布式配置
		** 准备部署的环境:
		linux01 	linux02 	             linux03
		namenode    resourcemanager			  
		datanode	datanode                 datanode
		nodemanager nodemanager              nodemanager
		
		** 进入到hadoop的etc/hadoop目录下
		
		** 删除windows脚本:
		$ rm -rf *.cmd
		** 重命名文件:
		$ mv mapred-site.xml.template mapred-site.xml
		** 配置文件:
			evn文件:只需要修改JAVA_HOME,我的机器:/home/admin/modules/jdk1.8.0_121
				hadoop-env.sh 
				yarn-env.sh
				mapred-env.sh 
			site文件:
				** core-site.xml
				
				<configuration>
					<property>
						<name>fs.defaultFS</name>
						<value>hdfs://linux01:8020</value>
					</property>
					<property>
						<name>hadoop.tmp.dir</name>
						<value>/home/admin/modules/hadoop-2.7.2/hadoop-data</value>
					</property>
				</configuration>
				
				** hdfs-site.xml
				
					<configuration>
						<!-- 指定数据冗余份数 -->
						<property>
							<name>dfs.replication</name>
							<value>1</value>
						</property>
						
						<!-- 关闭权限检查-->
						<property>
							<name>dfs.permissions.enable</name>
							<value>false</value>
						</property>
						<property>
							<name>dfs.namenode.secondary.http-address</name>
							<value>linux03:50090</value>
						</property>
						<property>
							<name>dfs.namenode.http-address</name>
							<value>linux01:50070</value>
						</property>
						<property>
							<name>dfs.webhdfs.enabled</name>
							<value>true</value>
						</property>
					</configuration>
				
				** yarn-site.xml
				
					<configuration>
						<!-- Site specific YARN configuration properties -->
							<property>
								<name>yarn.nodemanager.aux-services</name>
								<value>mapreduce_shuffle</value>
							</property>
							<property>
								<name>yarn.resourcemanager.hostname</name>
								<value>linux02</value>
							</property>
							<property>
								<name>yarn.log-aggregation-enable</name>
								<value>true</value>
							</property>
							<property>
								<name>yarn.log-aggregation.retain-seconds</name>
								<value>86400</value>
							</property>
							<property> 
								<name>yarn.log.server.url</name> 
								<value>http://linux01:19888/jobhistory/logs/</value> 
							</property> 
						</configuration>
				
				** mapred-site.xml
				
				<configuration>
					<property> 
						<name>mapreduce.framework.name</name> 
						<value>yarn</value> 
					</property>
					<!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->
					<property>
						<name>mapreduce.jobhistory.address</name>
						<value>linux01:10020</value>
					</property>
					<!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->
					<property>
						<name>mapreduce.jobhistory.webapp.address</name>
						<value>linux01:19888</value>
					</property>
				</configuration>
			slaves文件:
		** 分发安装配置完成的hadoop到linux02以及linux03
			$ scp -r hadoop-2.7.2/ linux02:/home/admin/modules/
			$ scp -r hadoop-2.7.2/ linux03:/home/admin/modules/
		** 格式化namenode(尖叫提示:在hadoop的根目录下执行)
			$ bin/hdfs namenode -format
		** 启动服务
			HDFS:
				$ sbin/start-dfs.sh
			YARN:(尖叫提示:一定要在ResourceManager所在机器启动)
				$ sbin/start-yarn.sh 
			JobHistoryServer:
				$ sbin/mr-jobhistory-daemon.sh start historyserver
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号