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

[经验分享] Hadoop集群安装--Ubuntu

[复制链接]

尚未签到

发表于 2018-10-29 09:22:55 | 显示全部楼层 |阅读模式
  我家宝最近在自学Hadoop,于是乎跟着一起玩玩,在此为她整理一篇基础搭建的博客,希望对她能有所帮助。同样,开始之前先来了解下,什么是Hadoop。
  Hadoop是一个由Apache基金会所开发的分布式系统基础架构。它是根据Google公司发表的MapReduce和Google文件系统的论文自行实现而成。Hadoop框架透明地为应用提供可靠性和数据移动。它实现了名为MapReduce的编程范式:应用程序被分区成许多小部分,而每个部分都能在集群中的任意节点上运行或重新运行。
  Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
  用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop的框架最核心的设计就是HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
  搭建
  搭建集群的话,需要最少两台机器来搭建一个多节点的Hadoop环境,我这里使用Hadoop最新稳定的2.7.3版本和三台云主机(1主两从,Ubuntu1404 LTS)。

  •   修改hosts文件
  保证三台机器的网络是可达的前提下,更改主机名,并修改hosts文件:
# hostnamectl  set-hostname master   // 在master节点上执行  
# hostnamectl  set-hostname slave-1  // 在slave-1节点上执行
  
# hostnamectl  set-hostname slave-2  // 在slave-2节点上执行
  
分别把三台机器的hosts文件进行修改:
  
# vim /etc/hosts
  
192.168.1.2  master
  
192.168.1.3  slave-1
  
192.168.1.4  slave-2
  2.在master和slave节点上安装java:
# add-apt-repository ppa:webupd8team/java  //添加ppa  
# apt-get update
  
# apt-get installoracle-java8-installer
  
# java -version  //检验Java版本
  
java version "1.8.0_121"
  
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
  
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
  3.禁用IPv6
  现在Hadoop目前对IPv6不是很好,在一些Linux发行版上可能造成一些未知bug。在Hadoop Wiki上提供了方法来禁用,我这里修改sysctl.conf文件,添加以下几行:
# vim /etc/sysctl.conf  
net.ipv6.conf.all.disable_ipv6 = 1
  
net.ipv6.conf.default.disable_ipv6 = 1
  
net.ipv6.conf.lo.disable_ipv6 = 1
  
# sysctl -p  //使其立即生效
  4.创建Hadoop User
  在master和slave节点上执行:
# addgroup hdgroup  //创建hadoop group  
# adduser —ingroup hdgroup hduser  //创建Hadoop User并加入Hadoop group
  
Adding user `hduser' ...
  
Adding new user `hduser' (1001) with group `hdgroup' ...
  
Creating home directory `/home/hduser' ...
  
Copying files from `/etc/skel' ...
  
Enter new UNIX password:            //输入密码之后一路回车即可
  
Retype new UNIX password:
  
passwd: password updated successfully
  
Changing the user information for hduser
  
Enter the new value, or press ENTER for the default
  
       Full Name []:
  
       Room Number []:
  
       Work Phone []:
  
       Home Phone []:
  
       Other []:
  
Is the information correct? [Y/n]
  Hadoop要求无密码登录,所以需要生成秘钥,这里注意要用刚才创建的普通hduser用户,分别在master和slave上执行如下操作:
# su - hduser  
$ ssh-keygen -N ''
  
Generating public/private rsa key pair.
  
Enter file in which to save the key (/home/hduser/.ssh/id_rsa):
  
Created directory '/home/hduser/.ssh'.
  
Your identification has been saved in /home/hduser/.ssh/id_rsa.
  
Your public key has been saved in /home/hduser/.ssh/id_rsa.pub.
  
The key fingerprint is:
  
5b:ae:c6:5a:ce:66:51:d3:6c:6c:14:9b:b2:8a:da:e9 hduser@master
  
The key's randomart image is:
  
+--[ RSA 2048]----+
  
|            ..   |
  
|            .o   |
  
|          .=o    |
  
|          oo*    |
  
|        S.o+     |
  
|       ..=       |
  
|      ..+..      |
  
|     o ==.       |
  
|    ..E=+        |
  
+-----------------+
  
$ ssh-copy-id hduser@master
  
$ ssh-copy-id hduser@slave-1
  
$ ssh-copy-id hduser@slave-2
  5.下载和安装Hadoop
  登录Hadoop的官方下载地址,选择你需要的版本,复制下载链接,这里我选用最新的2.7.3版本:
DSC0000.png

  打开链接之后,右键复制链接地址:
DSC0001.png

  在master和slave上分别执行(你也可以在一台机器上下载完之后拷贝到另外两台上):
$ cd /home/hduser  
$ wget -c
  
$ tar -zxvf hadoop-2.7.3.tar.gz
  
$ mv hadoop-2.7.3 hadoop
  6.更改环境变量
  首先确定之前安装的java home目录,查找办法如下(在任意一台机器上执行):
hduser@master:~$ env | grep -i java  
JAVA_HOME=/usr/lib/jvm/java-8-oracle
  分别在master和slave节点上执行以下操作,编辑".bashrc"文件,添加如下几行:
$ vim .bashrc   //编辑文件,添加如下几行  
export HADOOP_HOME=/home/hduser/hadoop
  
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
  
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  
$ source  .bashrc   //source使其立即生效
  分别在master和slave节点上执行以下操作,更改Hadoop-env的JAVA_HOME:
$ vim /home/hduser/hadoop/etc/hadoop/hadoop-env.sh  
#export JAVA_HOME=${JAVA_HOME}   //更改此行,或者注释掉新加以下一行
  
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
  7.Hadoop配置
  Hadoop的配置这里主要涉及四个配置文件:etc/hadoop/core-site.xml,etc/hadoop/hdfs-site.xml, etc/hadoop/yarn-site.xml and etc/hadoop/mapred-site.xml.
  这里摘录网络上的一段话,在继续下面的操作之前一定要阅读这段,以便更好的理解:

  •   Hadoop Distributed File System: A distributed file system that provides high-throughput access to application data. A HDFS cluster primarily consists of a NameNode that manages the file system metadata and DataNodes that store the actual data. If you compare HDFS to a traditional storage structures ( e.g. FAT, NTFS), then NameNode is analogous to a Directory Node structure, and DataNode is analogous to actual file storage blocks.
  •   Hadoop YARN: A framework for job scheduling and cluster resource management.
  •   Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
  ①在master和slave节点上更改"core-site.xml"文件,master和slave节点应该使用相同"fs.defaultFS"值,而且必须指向master节点;在“configuration”中间添加如下配置:
  
  hadoop.tmp.dir
  
  /home/hduser/tmp
  
  Temporary Directory.
  

  

  

  
  fs.defaultFS
  
  hdfs://master:54310
  
  Use HDFS as file storage engine
  

  最终core-site.xml配置文件如下图所示:
DSC0002.png

  如果tmp目录不存在,需要手动创建一个:
$ mkdir /home/hduser/tmp  
$ chown -R hduser:hdgroup /home/hduser/tmp //非hduser用户创建虚赋权
  ②只在master节点上更改"mapred-site.xml"文件,由于没有这个文件,需要需要复制那个template文件生成一个:
$ cd /home/hduser/hadoop/  
$ cp -av etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
  编辑xml配置文件,在“configuration”中间添加如下配置:
  
mapreduce.jobtracker.address
  
master:54311
  
The host and port that the MapReduce job tracker runs
  
  at. If “local”, then jobs are run in-process as a single map
  
  and reduce task.
  

  

  

  
mapreduce.framework.name
  
yarn
  
The framework for running mapreduce jobs
  

  ③在master和slave节点上更改"hdfs-site.xml"文件,在“configuration”中间添加如下配置:
  
dfs.replication
  
2
  
Default block replication.
  
  The actual number of replications can be specified when the file is created.
  
  The default is used if replication is not specified in create time.
  

  

  

  
dfs.namenode.name.dir
  
/data/hduser/hdfs/namenode
  
Determines where on the local filesystem the DFS name node should store the name table(fsimage). If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy.
  

  

  

  
dfs.datanode.data.dir
  
/data/hduser/hdfs/datanode
  
Determines where on the local filesystem an DFS data node should store its blocks. If this is a comma-delimited list of directories, then data will be stored in all named directories, typically on different devices. Directories that do not exist are ignored.
  

  并创建刚才配置文件中指定的目录:
$ mkdir -p /home/hduser/data/hduser/hdfs/{namenode,datanode}  
$ chown -R hduser:hdgroup /home/hduser/data/  //如果非hduser用户创建的需要赋权
  1).这里dfs.replication的默认值为3,这里我设置了2个副本,代表每个存储到HDFS的文件都有额外一个副本,这里的值可以视集群规模而定。
  2)dfs.namenode.name.dir和dfs.datanode.name.dir是namenode和datanode存放HDFS数据块文件的位置,如果没有需要手动创建
  ④在master和slave节点上更改"yarn-site.xml"文件,master和slave节点应该使用相同的值,并且指向master节点。在“configuration”中间添加如下配置:
  
yarn.nodemanager.aux-services
  
mapreduce_shuffle
  

  

  
yarn.resourcemanager.scheduler.address
  
master:8030
  

  

  
yarn.resourcemanager.address
  
master:8032
  

  

  
  yarn.resourcemanager.webapp.address
  
  master:8088
  

  

  
  yarn.resourcemanager.resource-tracker.address
  
  master:8031
  

  

  
  yarn.resourcemanager.admin.address
  
  master:8033
  

  ⑤更新slave文件
  在master节点上修改slave文件,添加master和slave节点的主机名或者ip地址,并去掉"localhost":
$ vim /home/hduser/hadoop/etc/hadoop/slaves  
master
  
slave-1
  
slave-2
  ⑥格式化namenode:
  在启动cluster之前需要先格式化namenode,在master上执行:
$ hdfs namenode -format  看到类似提示INFO:"Storage directory /home/hduser/data/hduser/hdfs/namenode has been successfully formatted."表示格式化成功。
  ⑦启动服务
  可以直接使用Hadoop提供的脚本"start-all.sh"启动所有服务,也可以把dfs和yarn分别启动。可以使用绝对路径:/home/hduser/hadoop/sbin/start-all.sh,也可以直接调用start-all.sh脚本(因为前面已经改过PATH的路径):
$ start-all.sh  如下图所示没有看到任何错误信息,表示集群已成功启动:
DSC0003.png

  ⑧验证查看
  使用jps命令分别在master和slave上查看启动的服务
DSC0004.png

DSC0005.png

  网页验证:
  浏览器打开:http://master:50070
DSC0006.png

  查看yarn web console: http://master:8088/cluster/nodes
  如果所有node均正常启动,这里能够全部显示:
DSC0007.png

  Hadoop解压的share目录里给我们提供了几个example的jar包,我们执行一个看下效果:
$ hadoop jar /home/hduser/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar  pi 30 100  执行之后通过浏览器访问:http://master:8088/cluster/apps
  能够看到当前执行的任务:
DSC0008.png

  写在最后:

  •   如果在新增了节点或者删除节点的时候出现了问题,首先删除slave的hadoop.tmp.dir,然后重新启动试试看,如果还是不行,尝试把Master的hadoop.tmp.dir删除(意味着dfs上的数据也会丢失)然后需要重新namenode –format。
  •   如果有任何报错信息记得去查log日志,文件位置在Hadoop的安装目录logs文件夹下。



运维网声明 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-627793-1-1.html 上篇帖子: centos6.5下部署用于生产的hadoop,并使用C语言API连接hadoop 下篇帖子: hadoop RPC从入门到暂时放弃
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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