进行大数据开发一般都离不开Hadoop环境,Hadoop慢慢也变成了一个生态环境的代名词,这里记录一下Hadoop本地伪分布式环境的搭建。
本地环境
操作系统 : manjaro-64bit
内存 : 8GB
CPU : i7-4770S
前期准备
Hadoop2.7.6,下载链接。
JDK1.8,下载链接。
配置工作
解压和配置环境变量
- 将hadoop-2.7.6.tar.gz和jdk-8u191-linux-x64.tar.gz拷贝到本地~/apps目录下(这里我习惯将软件安装到自己创建的~/apps文件夹下),然后解压:
1 | tar xzvf hadoop-2.7.6.tar.gz |
- 配置HADOOP_HOME和JAVA_HOME环境变量,修改当前用户~/.bashrc(如果使用的是zsh就是修改~/.zshrc),在文件尾添加如下内容:
1 | # JDK |
- 使环境变量生效:
如果是bash环境下:
1 | source ~/.bashrc |
如果是zsh环境:
1 | source ~/.zshrc |
配置HDFS
- 配置hadoop-2.7.6/etc/hadoop/core-site.xml,添加默认文件路径,配置内容如下:
1 | <configuration> |
这里如果自己配置了hostname,可以使用自己配置的hostname替换localhost,默认使用localhost,端口信息也可以自己指定为未使用的端口。
- 配置hadoop-2.7.6/etc/hadoop/hdfs-site.xml,配置namenode和datanode相关属性:
1 | <configuration> |
这里dfs.namenode.name.dir和dfs.datanode.data.dir可以根据自己的喜好进行配置,dfs.namenode.name.dir用于确定将HDFS文件系统的元信息保存在什么目录下。如果这个参数设置为多个目录,那么这些目录下都保存着元信息的多个备份。dfs.datanode.data.dir用于确定将HDFS文件系统的数据保存在什么目录下。
- 初次运行HDFS前需要先格式化HDFS,使用如下命令即可:
1 | hdfs namenode -format |
- 前台启动namenode和datanode
1 | hdfs namenode |
使用浏览器查看HDFS,在浏览器输入localhost:50070,注意50070端口是hdfs-site.xml中配置的dfs.namenode.http-address的值。如果能够看到相关页面信息,就代表HDFS配置成功了。
使用后台启动HDFS的namenode和datanode,因为前台启动一般是做调试用,正常生产环境下都是后台启动的,后台启动和停止namenode和datanode的方式如下:
1 | sbin/hadoop-daemon.sh start namenode |
1 | sbin/hadoop-daemon.sh stop namenode |
- 使用HDFS的一些shell命令操作HDFS:
查看HDFS目录:
1
hadoop fs -ls /
创建文件夹:
1
hadoop fs -mkdir /user/jony
将本地文件上传到HDFS:
1
2
3
4
5
6
7将本地~/test.txt文件上传到HDFS的/user/jony目录下:
hadoop fs -put ~/test.txt /user/jony
or
hadoop fs -copyFromLocal ~/test.txt /user/jony
查看是否上传成功:
hadoop fs -ls /user/jony/test.txt查看HDFS上文件的内容:
1
hadoop fs -text /user/jony/test.txt
或者
1
hadoop fs -cat /user/jony/test.txt
从HDFS上将文件拷贝到本地:
1
2
3hadoop fs -get /user/jony/test.txt ~/test_hdfs.txt
or
hadoop fs -copyToLocal /user/jony/test.txt ~/test_hdfs.txt
配置YARN
- 配置hadoop-2.7.6/etc/hadoop/yarn-site.xml,添加默认文件路径,配置内容如下:
1 | <configuration> |
yarn.nodemanager.log-dirs表示yarn日志存放地址(可配置多个目录)。yarn.nodemanager.local-dirs表示中间结果存放位置,这个参数通常会配置多个目录,以分摊磁盘IO负载。yarn.nodemanager.aux-services一般要配置为mapreduce_shuffle才能运行MapReduce程序。
- 配置hadoop-2.7.6/etc/hadoop/mapred-site.xml,添加默认文件路径,配置内容如下:
1 | <configuration> |
- 配置本地ssh免密登录,启动YARN时需要:
创建rsa密钥:
1
ssh-keygen -t rsa
加入authorized_keys:
1
cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
- 启动resourcemanager和nodemanager:
1 | sbin/yarn-daemon.sh start resourcemanager |
在浏览器查看YARN,输入http://localhost:8088
运行计算Pi的MapReduce程序测试YARN:
1 | hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar pi 5 10 |
- 关闭resourcemanager和nodemanager:
1 | sbin/yarn-daemon.sh stop resourcemanager |
总结
到此Hadoop基本环境就配置完成了,主要是配置了HDFS和YARN,并运行了简单的MapReduce程序来测试YARN环境的搭建是否正确。
HDFS是分布式文件系统,是大数据基础的存储管理系统,用于管理分布式文件的存储,实现分布式文件的高可用、线性扩展。
YARN是资源调度管理系统,负责在任务运行时调度集群资源给任务使用。
Hadoop生态还有很多内容,这里先不展开,后续用到其他的工具时再单独记录。
2018.12.26 晴 温度零下