2019独角兽企业重金招聘Python工程师标准>>>
安装准备:
vmware10
Centos6.5 64位版本
JDK1.8linux32位版
Hadoop2.7.3版本
安装过程讲解:
字符界面安装centos6.5,网络设置为主机模式或者桥连接
配置静态ip 并测试能不能从主机ping的通虚拟机
使用secureCRT进行远程ssh登陆
配置etc/hosts 添加ip对应的主机名,比如192.168.17.2 master
安装ssh 客户端,通过修改本地yum源来进行,成功后重启服务
关闭防火墙 chkconfig
创建普通用户 hadoop(名字可自定义)
设置免密钥ssh登录(伪分布式其实可以省略
上传jdk和hadoop2.7.3
使用普通用户登陆,在home目录下创建bd文件夹(非必需)
分别解压jdk和hadoop2.7.3,并测试
配置普通用户的环境变量,.bashrc(也可以直接在etc/profile进行配置)
测试echo $JAVA_HOME
修改配置5个配置文件
hadoop-env.sh
core-site.xml
hdfs-site.xml
mapred-sit.xml(将mapred-sit.xml.template重命令)
yarn-site.xml
使用jdk下面的bin目录中的jps来查看下进程
或者查看日志,在hadoop解压目录中logs里面
在主机windows里面的system32/drivers/etc/hosts里面添加linux主机名对应的linux里面的ip
通过浏览器进行访问8088端口和50070端口进行测试
具体操作:
1.添加hadoop用户
2.切换到hadoop用户
配置无密码ssh认证连接
...(自查)
获取hadoop安装包
从hadoop的官网获取你需要的版本,本教程采用2.8.X版本的安装包。
官网地址:http://hadoop.apache.org/releases.html
jdk
hadoop自身是用java编写的,所以需要java环境来运行它。需要下载一个和你选择的hadoop版本匹配的JDK安装包。Hadoop版本与java版本的对应关系如下:
hadoop3.0 java8
hadoop2.7及后续版本 java7
hadoop2.6及以前的版本 java6
为方便安装,我们到java的oracle官网下载一个64位的jdk8的rpm包。
安装jdk
...(省略)
安装hadoop
上传安装包
Hadoop用户操作:
查看上传的文件
配置hadoop环境变量
为hadoop配置JAVA_HOME
配置hadoop集群
集群配置文件下载地址:
链接:https://pan.baidu.com/s/1R5081Nd82B5u8DLMysnY7A 密码 :ldsq
Hadoop基础配置
core-site.xml 核心配置文件
它会被所有的hadoop进程使用。需在该配置文件中配置hadoop集群默认文件系统的访问uri(必需配置),可以指定IO缓冲区的大小等。
这个小集群的的配置如下:
fs.defaultFS
hdfs://192.168.0.11:9000
HDFS集群配置
hdfs-site.xml hdfs集群参数配置文件
在该文件配置hdfs集群的参数,常用的配置参数如下,如果都是使用的默认值,则不需进行配置。
- NameNode相关的参数:
- DataNode相关的参数:
小集群的配置如下:
hdfs-site.xml
文件的备份数量
dfs.replication
3
NameNode文件系统名称空间存放目录
dfs.namenode.name.dir
/home/hadoop/namespace
DataNode上文件数据块的存放目录
dfs.datanode.data.dir
/home/hadoop/data
从节点(DataNode)列表配置:
在NameNode的etc/hadoop/slaves 文件列出所有的DataNode的ip,一个一行。
如
10.0.2.20
10.0.2.21
10.0.2.22
YARN集群配置
etc/hadoop/mapred-site.xml 配置
mapreduce.framework.name
yarn
etc/hadoop/yarn-site.xml 配置
resourceManager节点的主机地址
yarn.resourcemanager.hostname
192.168.0.13
yarn.nodemanager.aux-services
mapreduce_shuffle
复制机器
1、复制
2、修改复制机器:
修改主机名:
hostnamectl set-hostname xxx
修改ip地址:
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
修改 IPADDR=指定ip
重启网络服务
systemctl restart network
启动集群
启动hdfs集群
1、格式化文件系统
$ hdfs namenode -format
2、在NameNode上启动hdfs集群
$ start-dfs.sh
hadoop进程的日志将输出在目录 $HADOOP_HOME/logs下
3、通过浏览器浏览NameNode的web界面,默认的浏览地址为:
http://namenode-ip:50070
如 http://192.168.0.111:50070
可用jps命令查看各个节点上运行的java进程
4、在NameNode上关闭hdfs集群
$ stop-dfs.sh
启动yarn集群
1、启动:在ResourceManager上启动yarn集群
$ start-yarn.sh
2、通过浏览器浏览ResourceManager的web界面,默认的浏览地址为:
http:// ResourceManager-ip:8088
如 http://192.168.0.111:8088
3、关闭:在ResourceManager上关闭yarn集群
$ stop-yarn.sh
启动jobHistoryServer
mr-jobhistory-daemon.sh start historyserver
测试
1、在HDFS上创建执行MapReduce作业所需的目录
$ hdfs dfs -mkdir /user
$ hdfs dfs -mkdir /user/
2、将输入文件拷贝到分布式文件系统上:
$ hdfs dfs -mkdir input
$ hdfs dfs -put etc/hadoop/*.xml input
3、运行MapReduce示例作业:
$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar grep input output 'dfs[a-z.]+'
4、查看输出结果文件:
方式一:将分布式文件系统的输出文件拷贝到本地文件系统上,再查看:
$ hdfs dfs -get output output
$ cat output/*
方式二:直接在分布式文件系统上查看输出文件:
$ hdfs dfs -cat output/*
我们会发现,系统被卡死了,为什么呢?因为机器的内存只有512M,内存被耗尽了。用 ctrl+c强制结束(会等待好长一段时间),再来看一下内存使用情况:
其实我们在启动HDFS、yarn后,内存就用完了。重启系统后,我们启动hdfs、yarn,马上看一下内存的使用情况:
再要执行mapreduce任务又需要很多内存(不够用),根本就执行不了。
解决办法:
1、调高机器的内存到1G
2、运行作业时加入jvm重用参数,如下所示:
hadoop jar /usr/hadoop/latest/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar grep -Dmapreduce.job.ubertask.enable=true input output5 'hdf[a-z.]+'