说明:本章内容都基于虚拟机上操作,而非平台,或有些许差异,望看官周知。
1、基础环境:
(1)配置好三台机器的hosts
(2)配置NTP服务
(3)配置SSH免密登陆
(4)安装好JDK(java -version)查看,有版本信息即可。
可参考博主之前发布的博客。
2、软件包:
https://pan.baidu.com/s/1LG27g0-zqeRJFr3dkY39Mw
提取码:ilq3
压缩格式为.GZ
2、安装hadoop
(1)首先通过winscp等方法把需要的软件压缩包传进虚拟机中。
可以在虚拟机中新建一个hadoop目录,然后把本机文件传入即可:
mkdir /usr/hadoop
(2)进入hadoop目录,执行解压命令
cd /usr/hadoop
tar -zxvf hadoop-2.7.1.tar.gz -C /usr/
(3)温馨提示:善用TAB键补全代码,可以减少很多错误。
3、创建数据目录
mkdir /home/hadoopdir
mkdir /home/hadoopdir/temp
mkdir /home/hadoopdir/dfs
mkdir /home/hadoopdir/dfs/name
mkdir /home/hadoopdir/dfs/data
mkdir /home/hadoopdir/dfs/data1
mkdir /home/hadoopdir/dfs/data2
4、配置Hadoop环境变量
vim /usr/hadoop-2.7.1/etc/hadoop/hadoop.env.sh
增加自己的java环境变量
随后编辑profile文件,在文件末尾加入hadoop环境变量:
export HADOOP_HOME=/usr/hadoop-2.7.1
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${PATH}
使文件生效:
source /etc/profile
测试是否安装成功,出现版本信息即可:
hadoop version
5、修改核心配置文件:
(1)修改core-site.xml
vim /usr/hadoop-2.7.1/etc/hadoop/core-site.xml
在<configuration>
和</configuration>
中间添加如下配置:
<property><name>fs.defaultFS</name><value>hdfs://masterNode1:9000</value><description>指定namenode的hdfs协议的文件系统通信地址,,masterNode1为主机名,也可以指定为一个namenode服务(这个服务内部可以有多台namenode实现ha的namenode服务)</description></property><property><name>io.file.buffer.size</name><value>65536</value><description>读写缓存大小设定,该属性值单位为KB,65536KB即为64M</description></property><property><name>hadoop.tmp.dir</name><value>/home/hadoopdir/tmp/</value><description>临时文件路径,默认为/tmp,在虚拟机中必须指定这一项为其他目录,否则随着虚拟机的重启,/tmp目录会自动消失</description></property>
(2)修改hdfs-site.xml
编辑文件:
vim /usr/hadoop-2.7.1/etc/hadoop/hdfs-site.xml
插入内容:
<property><name>dfs.namenode.name.dir</name><value>/home/hadoopdir/dfs/name</value><description>hdfs元数据存存储目录</description></property><property><name>dfs.datanode.data.dir</name><value>/home/hadoopdir/dfs/data,/home/hadoopdir/dfs/data2</value><description>DataNode在本地文件系统中存放块的路径,如果是多个路径,请用逗号隔开,会自动选用多个目录进行数据存储,生产环境中每一个路径应该对应一个磁盘的挂载点</description></property><property><name>dfs.replication</name><value>2</value><description>备份数量,默认备份数2,伪分布式则将其配置成1</description></property><property><name>dfs.blocksize</name><value>33554432</value><description>设置大文件系统HDFS块,,默认值为64M</description></property><property><name>dfs.namenode.handler.count</name><value>100</value><description>NameNode服务器线程数,用于处理来自DataNodes的RPC</description></property><property><name>dfs.webhdfs.enabled</name><value>true</value><description>是否开通HDFS的Web接口,默认端口是50070</description></property>
(3)修改mapred-site.xml
本没有此文件,需要复制一份
先进入以下目录:
cd /usr/hadoop-2.7.1/etc/hadoop
复制mapred-site.xml.template文件:
cp mapred-site.xml.template mapred-site.xml
随后修改文件:
vim mapred-site.xml
增加内容:
<property><name>mapreduce.framework.name</name><value>yarn</value><description>执行框架设置为Hadoop的YARN</description></property><property><name>mapreduce.map.memory.mb</name><value>1024</value><description>对maps的资源限制,单位mb</description></property><property><name>mapreduce.map.java.opts</name><value>-Xmx819M</value><description>maps中对jvm child设置堆大小</description></property><property><name>mapreduce.reduce.memory.mb</name><value>2048</value><description>设置 reduces的资源限制,单位mb</description></property><property><name>mapreduce.reduce.java.opts</name><value>-Xmx1638M</value><description>reduces对 jvm child设置的堆大小</description></property><property><name>mapreduce.task.io.sort.mb</name><value>256</value><description>更高的内存限制,而对数据进行排序的效率,单位mb</description></property><property><name>mapreduce.task.io.sort.factor</name><value>50</value><description>在文件排序中更多的流合并为一次</description></property><property><name>mapreduce.reduce.shuffle.parallelcopies</name><value>50</value><description>通过reduces从很多的map中读取较多的平行副本</description></property><property><name>mapreduce.jobhistory.address</name><value>masterNode1:10020</value><description>历史作业记录服务器的IP和端口号,请填写集群的yarn主机的访问地址</description></property><property><name>mapreduce.jobhistory.webapp.address</name><value>masterNode1:19888</value><description>历史作业记录的UI显示IP和端口号,请填写集群的yarn主机的访问地址</description></property><property><name>yarn.app.mapreduce.am.staging-dir</name><value>/tmp/hadoop-yarn/staging</value><description>历史作业记录在HDFS中的存放位置</description></property><property><name>mapreduce.jobhistory.done-dir</name><value>${yarn.app.mapreduce.am.staging-dir}/history/done</value><description>已完成历史作业记录在HDFS中的存放位置</description></property><property><name>mapreduce.jobhistory.intermediate-done-dir</name><value>${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate</value><description>未完成历史作业记录在HDFS中的存放位置</description></property>
(4)修改yarn-site.xml
编辑文件:
vim /usr/hadoop-2.7.1/etc/hadoop/yarn-site.xml
增加内容:
<property><name>yarn.resourcemanager.hostname</name><value>masterNode1</value><description>设置ResourceManager,也就是yarn主机的地址</description></property><property><name>yarn.resourcemanager.address</name><value>masterNode1:8032</value><description>Yarn总管理器IPC通讯地址,客户端通过该地址向RM提交应用程序,杀死应用程序等,默认值是设置的hostName:8032</description></property><property><name>yarn.resourcemanager.scheduler.address</name><value>masterNode1:8030</value><description>yarn总管理器调度程序的IPC通讯地址,通过该地址向RM申请资源、释放资源,默认值是设置的hostName:8030</description></property><property><name>yarn.resourcemanager.resource-tracker.address</name><value>masterNode1:8031</value><description>NodeManager通过该地址向RM汇报心跳,领取任务等。默认值是设置的hostName:8031</description></property><property><name>yarn.resourcemanager.admin.address</name><value>masterNode1:8033</value><description>管理员通过该地址向RM发送管理命令等。默认值是设置的hostName:8033</description></property><property><name>yarn.resourcemanager.webapp.address</name><value>masterNode1:8088</value><description>用户可通过该地址在浏览器中查看集群各类信息,默认值是设置的hostName:8088</description></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value><description>NodeManager上运行的附属服务。需配置成mapreduce_shuffle才可运行MapReduce程序</description></property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value><description>启用的资源调度器主类</description></property><property><name>yarn.nodemanager.resource.memory-mb</name><value>4096</value></property><property><name>yarn.scheduler.minimum-allocation-mb</name><value>1024</value></property><property><name>yarn.scheduler.maximum-allocation-mb</name><value>4096</value></property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value><description>是否强制检查虚拟内存的使用配额,如果内存不够的时候系统就会使用swap空间内存,而hadoop会强制检查使用的虚拟内存的数额,如果使用的虚拟内存的数量大于真实内存的2.1倍,会自动杀死相关字进程。</description></property><property><name>yarn.nodemanager.pmem-check-enabled</name><value>false</value></property><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>1</value><description>表示该节点上YARN可使用的虚拟CPU个数,默认是8,注意,目前推荐将该值设值为与物理CPU核数数目相同。如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物理CPU总数。推荐在slaveNode中将这个数值设定为1</description></property><property><name>yarn.scheduler.maximum-allocation-vcores</name><value>3</value><description>单个任务可申请的最多虚拟CPU个数,默认是32。</description></property>
(5)在Namenode机器上修改slaves文件:
编辑文件:
vim /usr/hadoop-2.7.1/etc/hadoop/slaves
将原本的localhost删除,增加三台主机名:
如:
masterNode1
slaveNode1
slaveNode2
6、格式化Namenode
进入hadoop安装目录,执行格式化:
cd /usr/hadoop-2.7.1/
hadoop namenode -format 格式化namenode
status 为 0则成功,若不为0,则可查看报错信息
7、启动进程:
./sbin/start-all.sh
jps
查看进程
8、打开浏览器测试
输入:
http://+主机名:50070
http://+主机吗:8088
如果无法启动,请查看namenode是否已经启动成功。