大数据(2) - Hadoop完全分布式的部署

apache hadoop 官方文档

** Hadoop介绍
  ** HDFS:分布式存储文件
    角色:NameNode和DataNode
  ** YARN:分布式资源调度框架(Hadoop2.x以上才引用)
    角色:ResourceManager和NodeManager
  ** MapReduce:分布式数据处理框架

一、下载hadoop拉到linux中,并解压到指定目录

官方下载地址

tips:用smb把hadoop压缩包从window拉到linux时,请注意smb的登陆用户,会导致后面一堆坑,慎用root登陆smb。

(1)将压缩包拉到/home/admin/softwares/installtions/目录

   (2) 解压到/home/admin/modules目录

tar -zxf hadoop-2.7.2.tar.gz -C /home/admin/modules/

 

二、配置环境变量 

 

vim /etc/profile

在最下面添加

export HADOOP_HOME=/home/admin/modules/hadoop-2.7.2/bin
export PATH=$PATH:$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"


保存退出后

source /etc/profile

  

配置成功后可用 hadoop version 查看版本,注意没有横杠!

 

三、配置

** 最终配置效果:
linux01:namenode、datanode、nodemanager 

linux02:resourcemanager  、datanode 、nodemanager 

linux03:datanode、nodemanager

(1)删除windows脚本

** 进入到hadoop的etc/hadoop目录下
		
$ rm -rf *.cmd

  

(2)重命名文件

$ mv mapred-site.xml.template mapred-site.xml

 

(3)配置evn文件

查看java路径:

echo $JAVA_HOME,我的机器:/home/admin/modules/jdk1.8.0_131

配置hadoop-env.sh


配置yarn-env.sh


配置mapred-env.sh

 

(4)配置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>

  

(5)配置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-2.7.2的根目录下执行)

$ bin/hdfs namenode -format

  如果正常格式化会生成haddop-data文件夹

六、启动服务

HDFS:(linux01)
	$ sbin/start-dfs.sh
YARN:(一定要在ResourceManager所在机器启动,linux02)
	$ sbin/start-yarn.sh 
JobHistoryServer:(linux01)
	$ ssh admin@linux01 '/home/admin/modules/hadoop-2.7.2/sbin/mr-jobhistory-daemon.sh start historyserver' 

常见启动失败情况:

(1)hadoop处于安全模式,namenode启动失败,参考链接

  解决:磁盘空间不足,需要手动释放资源后再用命令 hdfs dfsadmin -safemode leave  离开安全模式

 

 全部完成后查看:

在浏览器输入192.168.1.213:50070,如果不在安全模式证明namenode启动正常

 

输入192.168.1.214:8088

七、关闭全部服务

$ sbin/stop-all.sh

  

八、将系统变量追加到用户变量中(3台机器都要操作)

$ cd ~

$ cat /etc/profile >> .bashrc 

 生效 $ source ~/.bashrc

九、编写脚本批量操作三台机器

$ cd ~
$ mkdir tools
$ vim /tools/jpsutil.sh

添加批量查看jps服务的脚本

#!/bin/bash
for i in admin@linux01 admin@linux02 admin@linux03
do
    echo "==================$i==================="
    ssh $i 'jps'
done

保存后查看

sh jpsutil.sh

  

十、遇到问题

  关闭虚拟机后重启,重启集群时,namenode启动失败,需要使用命令:bin/hdfs namenode -format

格式化,才能启动。

  格式化后datanode又有异常,需要把/hadoop-2.7.2/hadoop-data/dfs/name/current/VERSION里面的clusterID复制下来,依次替换/hadoop-2.7.2/hadoop-data/dfs/data/current/VERSION里的clusterID,再执行:sbin/hadoop-daemon.sh start datanode(全部机器都要操作)

  格式化会导致集群原本存储的数据全部丢失,如何正常关机后,正常开启集群,这个有待研究。

posted @ 2018-08-16 10:10  shifu204  阅读(597)  评论(0编辑  收藏  举报