设为首页 收藏本站
查看: 1318|回复: 0

[经验分享] Hadoop入门第四篇:手动搭建自己的hadoop小集群

[复制链接]

尚未签到

发表于 2017-12-17 19:48:57 | 显示全部楼层 |阅读模式
前言
  好几天没有更新了,本来是应该先写HDFS的相关内容,但是考虑到HDFS是我们后面所有学习的基础,而我只是简单的了解了一下而已,后面准备好好整理HDFS再写这块。所以大家在阅读这篇文章之前,请先了解HDFS的相关基本概念。
  本次搭建是手动在三台机器上搭建的,后续会尝试用docker或者apache  ambari来搭建管理集群,这次搭建只是能够通过动手去更深的了解hadoop结构。

准备工作


  • 物理硬件准备,三台centos7.3机器(建议大家在阿里云或者aws购买),自己玩的话 低配就行了。同时修改三台机器的/etc/hosts文件:添加   ip1  master         ip2  slave1  ip3  slave2,其中ip可以直接填机器的内网ip(这块很重要,后面我们所有的xml配置中都是用master/slave这种代替ip)
  • 创建一个单独的用户,专门用来管理hadoop相关组件,并且拥有sudo权限,如果不熟悉linux相关命令,请自行google解决。相关命令:useradd  visudo 等
  • 安装jdk,这块也可以自行google,注意在/etc/profile中配置JAVA_HOME环境变量,同时记得source一下
  • 下载hadoop文件,我用的是2.8.1版本的,大家可以直接在官网上下载
  • ssh免密码登录连接,这块我稍微具体讲一下。
配置ssh免密码登录连接


  • 这块是为了让集群中机器能够互相ssh连接而不需要通过密码验证
  • 在master机器执行:ssh -keygen -t rsa  -f ~/.ssh/id_rsa(在~/.ssh目录下会看到相关的id_rsa  id_rsa.pub文件 )
  • cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  • 最后在id_rsa  authorized_keys文件复制到另外两台机器上面,这样这三台机器就可以相互连接了。由于centos ssh第一次的时候,会跟你确认机器信息,需要输入yes,所以这个时候可以在每台机器互连一下,避免之后启动hadoop相关脚本的时候需要输入yes。
  • 针对集群中机器需要同步id_rsa  hosts等文件,所以大家可以考虑部署一个NFS,这块就不具体介绍了。
Hadoop配置以及启动
  集群的配置以及启动步骤,大家可以直接参考官网和我这篇文章,官网将每个配置文件的作用以及属性介绍的非常清楚 http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html

相关文件介绍

hadoop目录介绍
  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和hadoop环境变量
  修改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  按照自己安装的目录填写

core-site.xml
  Hadoop Core的配置项,例如HDFS和MapReduce常用的I/O设置,相关属性 参考官网 ,我配置了下面的几个属性值
  

<configuration>  <property>
  <name>fs.defaultFS</name>
  <value>hdfs://master:9000</value>
  </property>
  <property>
  <name>io.file.buffer.size</name>
  <value>131072</value>
  </property>
  <property>
  <name>hadoop.tmp.dir</name>
  <value>/data/opt/hadoop-2.8.1/tmp</value>
  </property>
  
</configuration>
  


hdfs-site.xml
  Hadoop守护进程的配置项,包括namenode,secondaryNameNode和datanode,其中类似dfs.namenode.name.dir这种配置项,可以配置多个目录用comma隔开,这样就可以用来备份。
  

<configuration>  <property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>master:50090</value>
  </property>
  <property>
  <name>dfs.replication</name>
  <value>2</value>
  </property>
  <property>
  <name>dfs.namenode.name.dir</name>
  <value>file:/data/opt/hadoop-2.8.1/hdfs/name/,file:/data/opt/hadoop-2.8.1/hdfs/name/bak</value>
  </property>
  <property>
  <name>dfs.datanode.data.dir</name>
  <value>file:/data/opt/hadoop-2.8.1/hdfs/data/,file:/data/opt/hadoop-2.8.1/hdfs/data/bak</value>
  </property>
  
</configuration>
  

  


yarn-site.xml
  yarn平台的基础配置,主要是配置ResourceManager和NodeManager,我这里面主要配置了一些端口号
  

<configuration>  <property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
  </property>
  <property>
  <name>yarn.resourcemanager.address</name>
  <value>master:8032</value>
  </property>   
  <property>   
  <name>yarn.resourcemanager.scheduler.address</name>   
  <value>master:8030</value>   
  </property>   
  <property>   
  <name>yarn.resourcemanager.resource-tracker.address</name>   
  <value>master:8031</value>   
  </property>   
  <property>   
  <name>yarn.resourcemanager.admin.address</name>   
  <value>master:8033</value>   
  </property>   
  <property>   
  <name>yarn.resourcemanager.webapp.address</name>   
  <value>master:8088</value>   
  </property>
  
</configuration>
  


mapred-site.xml
  这里面主要配置map/reduce  task的相关资源最大限制配置,后续应该在调整集群性能的时候会用得上,目前都直接使用default ,还有mr历史任务的相关端口配置
  

<configuration>  <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
  </property>
  
</configuration>
  

  


其他:etc/hadoop/slaves  etc/hadoop/log4j.properties
  slaves文件中直接配置你的slave机器,比如我的就直接是slave1   slave2
  log4j 是日志配置,这块搞java的都很熟悉的,就不细讲了

启动过程

复制文件到其他slave机器
  scp -r hadoop hadoop@slave1:/data/opt/hadoop-2.8.1/etc
  scp -r hadoop hadoop@slave2:/data/opt/hadoop-2.8.1/etc

启动脚本


  • 格式化节点:./sbin/hdfs namenode -format
  • 启动脚本:./sbin/start-all.sh    启动hdfs  yarn
  • 启动mrhistory server,用来查看历史job: ./sbin/mr-jobhistory-daemon.sh   start historyserver
查看启动效果:
  在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历史运行情况)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-425124-1-1.html 上篇帖子: 搭建hadoop、hdfs环境 下篇帖子: Hadoop 2.7 伪分布式环境搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表