好几天没有更新了,本来是应该先写HDFS的相关内容,但是考虑到HDFS是我们后面所有学习的基础,而我只是简单的了解了一下而已,后面准备好好整理HDFS再写这块。所以大家在阅读这篇文章之前,请先了解HDFS的相关基本概念。
本次搭建是手动在三台机器上搭建的,后续会尝试用docker或者apache ambari来搭建管理集群,这次搭建只是能够通过动手去更深的了解hadoop结构。
集群的配置以及启动步骤,大家可以直接参考官网和我这篇文章,官网将每个配置文件的作用以及属性介绍的非常清楚 http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html
tar xvf xxxx.tar.gz后,sudo chown -R hadoop:hadoop hadoop-2.8.1 cd hadoop-2.8.1
请主要注意一下三个目录: ./etc/hadoop ./bin ./sbin
其实./etc/hadoop主要是hadoop的配置文件,后面提到的相关配置文件位置都在该目录下
./bin目录下主要是hadoop hive命令,比如之前MapReduce在伪分布式的时候,我们提交mrJob的时候用的./bin/hadoop jar xxxxx ,复制文件到HDFS 用的./bin/hdfs dfs -put等。
./sbin目录下都是hadoop相关组件的启动或者停止脚本,大家可以看一下start-all.sh 脚本,顺着这个看 就可以大致了解hdfs yarn等启动过程。
修改hadoop-env.sh中export JAVA_HOME=${JAVA_HOME} ,把该占位符用真实位置替代,比如我的:export JAVA_HOME=/usr/java/latest,其他一些关于JAVA_OPTS的相关最大内存限制等配置 可以根据自己的实际情况调整。
在/etc/profile中添加hadoop相关环境变量:export HADOOP_HOME=/data/opt/hadoop-2.8.1 按照自己安装的目录填写
Hadoop Core的配置项,例如HDFS和MapReduce常用的I/O设置,相关属性 参考官网 ,我配置了下面的几个属性值
fs.defaultFS
hdfs://master:9000
io.file.buffer.size
131072
hadoop.tmp.dir
/data/opt/hadoop-2.8.1/tmp
Hadoop守护进程的配置项,包括namenode,secondaryNameNode和datanode,其中类似dfs.namenode.name.dir这种配置项,可以配置多个目录用comma隔开,这样就可以用来备份。
dfs.namenode.secondary.http-address
master:50090
dfs.replication
2
dfs.namenode.name.dir
file:/data/opt/hadoop-2.8.1/hdfs/name/,file:/data/opt/hadoop-2.8.1/hdfs/name/bak
dfs.datanode.data.dir
file:/data/opt/hadoop-2.8.1/hdfs/data/,file:/data/opt/hadoop-2.8.1/hdfs/data/bak
yarn平台的基础配置,主要是配置ResourceManager和NodeManager,我这里面主要配置了一些端口号
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.address
master:8032
yarn.resourcemanager.scheduler.address
master:8030
yarn.resourcemanager.resource-tracker.address
master:8031
yarn.resourcemanager.admin.address
master:8033
yarn.resourcemanager.webapp.address
master:8088
这里面主要配置map/reduce task的相关资源最大限制配置,后续应该在调整集群性能的时候会用得上,目前都直接使用default ,还有mr历史任务的相关端口配置
mapreduce.framework.name
yarn
slaves文件中直接配置你的slave机器,比如我的就直接是slave1 slave2
log4j 是日志配置,这块搞java的都很熟悉的,就不细讲了
scp -r hadoop hadoop@slave1:/data/opt/hadoop-2.8.1/etc
scp -r hadoop hadoop@slave2:/data/opt/hadoop-2.8.1/etc
在master节点输入 jps命令,将会显示以下进程:(忽略RunJar两个进程,这两个是跟hive相关的)
8353 RunJar
6658 NameNode
11587 RunJar
6867 SecondaryNameNode
6030 ResourceManager
24959 Jps
在slave1、slave2上输入jps命名,将会显示以下进程:
19140 Jps
29020 NodeManager
28894 DataNode
http://master:50070 #整个集群
http://master:50090 #SecondaryNameNode的情况
http://master:8088 #resourcemanager的情况
http://master:19888 #historyserver(MapReduce历史运行情况)