Hadoop安装
1. Hadoop安装包目录结构
bin:Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop。
etc:Hadoop配置文件所在的目录,包括core-site,xml、hdfs-site.xml、mapred-site.xml等从Hadoop1.0继承而来的配置文件和yarn-site.xml等Hadoop2.0新增的配置文件。
include:对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序。
lib:该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用。
libexec:各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动参数(比如JVM参数)等基本信息。
sbin:Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本。
share:Hadoop各个模块编译后的jar包所在的目录。
2. Hadoop安装和配置文件修改
以下操作在node-1主机中完成
将hadoop-3.2.0.tar.gz上传到 /usr/local/hadoop,解压,解压完成后,可以删除原来的压缩包
1 rm -rf hadoop-3.2.0.tar.gz
Hadoop安装主要就是配置文件的修改,一般在主节点进行修改,完毕后scp下发给其他各个从节点机器。
2.1. hadoop-env.sh
文件中设置的是Hadoop运行时需要的环境变量。JAVA_HOME是必须设置的,即使我们当前的系统中设置了JAVA_HOME,它也是不认识的,因为Hadoop即使是在本机上执行,它也是把当前的执行环境当成远程服务器。
vi hadoop-env.sh
1 export JAVA_HOME=/usr/local/java/jdk1.8.0_201
2.2. core-site.xml
hadoop的核心配置文件,有默认的配置项core-default.xml。
core-default.xml与core-site.xml的功能是一样的,如果在core-site.xml里没有配置的属性,则会自动会获取core-default.xml里的相同属性的值。
创建一个Hadoop临时目录,不使用默认的tmp,路径为:/usr/local/hadoop/data/hddata
将以下内容写在configuration标签内
<!-- 用于设置Hadoop的文件系统,由URI指定 --> <!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://node-1:9000</value> </property> <!-- 配置Hadoop的临时目录,默认/tmp/hadoop-${user.name} --> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/data/hddata</value> </property>
2.3. hdfs-site.xml
HDFS的核心配置文件,有默认的配置项hdfs-default.xml。
hdfs-default.xml与hdfs-site.xml的功能是一样的,如果在hdfs-site.xml里没有配置的属性,则会自动会获取hdfs-default.xml里的相同属性的值。
<!-- 指定HDFS副本的数量,不指定默认为3 --> <property> <name>dfs.replication</name> <value>2</value> </property> <!-- secondary namenode 所在主机的ip和端口-> <property> <name>dfs.namenode.secondary.http-address</name> <value>node-2:50090</value> </property>
2.4. mapred-site.xml
MapReduce的核心配置文件,有默认的配置项mapred-default.xml。
mapred-default.xml与mapred-site.xml的功能是一样的,如果在mapred-site.xml里没有配置的属性,则会自动会获取mapred-default.xml里的相同属性的值。
说明:有些hadoop版本可能没有mapred-site.xml,需要将模板复制,我安装的是3.2.0版本,里面有mapred-site.xml,不需要再进行复制,直接编译即可。
<!-- 指定mr运行时框架,这里指定在yarn上,默认是local --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
2.5. yarn-site.xml
YARN的核心配置文件,有默认的配置项yarn-default.xml。
yarn-default.xml与yarn-site.xml的功能是一样的,如果在yarn-site.xml里没有配置的属性,则会自动会获取yarn-default.xml里的相同属性的值。
<!-- 指定YARN的老大(ResourceManager)的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>node-1</value> </property> <!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
2.6. slaves
slaves文件里面记录的是集群主机名。一般有以下两种作用:
说明:创建的时候必须换行,换行表示不同的机器
一是:配合一键启动脚本如start-dfs.sh、stop-yarn.sh用来进行集群启动。这时候slaves文件里面的主机标记的就是从节点角色所在的机器。
二是:可以配合hdfs-site.xml里面dfs.hosts属性形成一种白名单机制。
dfs.hosts指定一个文件,其中包含允许连接到NameNode的主机列表。必须指定文件的完整路径名。如果值为空,则允许所有主机。例如:
<property> <name> dfs.hosts </name> <value>/root/apps/hadoop/etc/hadoop/slaves </value> </property>
那么所有在slaves中的主机才可以加入的集群中。
3. Hadoop环境变量
编辑环境变量的配置文件:
vi /etc/profile
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.2.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存配置文件,刷新配置文件:
source /etc/profile
到此为止,node-1的hadoop就全部配置结束了,接下来要使用scp命令将这些配置复制到node-2、node-3主机中。
scp -r /usr/local/hadoop/hadoop-3.2.0/ root@node-2:/usr/local/hadoop/
scp -r /usr/local/hadoop/hadoop-3.2.0/ root@node-3:/usr/local/hadoop/
-r:表示递归,文件夹所有内容
然后将环境变量也复制过去,当然,你也可以进行修改
scp -r /etc/profile root@node-2:/etc/
scp -r /etc/profile root@node-3:/etc/
复制完成后,node-2、node-3主机中要重新加载配置文件
source /etc/profile
内容补充:
关于hadoop的配置文件:
***-default.xml 这里面配置了hadoop默认的配置选项
如果用户没有更改 那么这里面的选项将会生效
****-site.xml 这里面配置了用户需要自定义的配置选项
site中配置选项优先级>Default中的,如果有配置的话 就会覆盖默认的配置选项