Hadoop集群完全分布式搭建

Hadoop先导

大数据时代的核心是计算和数据处理,在计算方面,主要是通过分布式计算完成海量数据的计算,在海量数据的计算方面,目前集中于3个场景,离线计算:Hadoop,内存计算:Spark,实时计算(流式计算):Storm,Flink等。Hadoop的搭建对于入门是必不可少的,以前曾经搭建过,但是很久没弄了,现在重新拾起Hadoop,Spark等,搭建其运行环境是第一步,这里详细记录我的步骤,个人负责的认为,按照我的步骤,一定能成功搭建出完全分布式的Hadoop集群!

Hadoop三种运行模式

  • 单机模式

单击模式是指:Hadoop被配置成以非分布式模式运行的一个独立Java进程,在一个JVM中运行。这对调试非常有帮助。

  • 伪分布式模式

伪分布式是指:一个机器上,即当namenode,又当datanode,是jobtracker也是tasktracker。没有所谓的在多台机器上进行真正的分布式计算,故称为伪分布式模式

  • 完全分布式模式

namenode,datanode,jobtracker,tasktracker各司其职。可以部署几十上千个节点中。

在这里,介绍完全分布式模式的搭建过程。

第一步:集群规划

按照Hadoop集群的基本要求,其中一个是Master节点,用于运行Hadoop程序中的namenode,sencondorynamenode和jobtracker任务。另外一个用于冗余目的。Slaver节点用于运行hadoop程序中的datanode和tasktracker任务。所以模拟hadoop集群至少三个节点。在实际生产环境中,部署的肯定是几十上千台,这个时候,至少有2+个Master和2+Slaver,所以,其实部署4台是比较适合,但是由于4台对机器要求,因为我是在VM里面进行安装集群,所以能安装的数量有限,同时部署更多机器,主要是Hadoop文件的配置上,不是搭建上的意义,所以3台已经足够能理解Hadoop分布式集群了。在这里我先安装一台机器Master,两台Slaver通过虚拟机复制即可。废话不多说,直接实践最重要。

第二步:搭建说明

在VM中搭建Hadoop完全分布式集群是十分容易的,因为可以通过克隆操作系统,克隆多个虚拟系统,克隆的虚拟操作系统的IP地址是连续的。纵观搭建Hadoop的整个流程,第一,每天机器都必须有JDK,ssh,vim(可选),然后每台机器能免ssh登录。第二就是每台机器安装Hadoop,配置Hadoop文件。在这里搭建的流程,其中就是上述两个步骤。

第三步:在VM安装Linux虚拟机

因为CentOS需要下载,我现成有Ubuntu14.04-64位的镜像文件,所以直接安装这个,但是为了体验真实的生产环境,我建议从CentOS入手,因为CentOS更适合实际生产。

  1. 安装Linux虚拟机十分简单,在此处略过。
  2. 安装好后安装VM tools。
    3.安装搜狗输入法,毕竟容易中英文切换,如果习惯中文,安装中文包。
    4.初始化root用户的密码,新建一个用户,在这里我是bigger用户,完成这些可以进入第二步。

第四步:安装JDK,ssh,vim

JDK

export JAVA_HOME=/lib/jvm/jdk1.7.0_76 
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH
  • 更新配置文件
    source /etc/profile
  • 验证
    java -version


安装ssh和vim

    sudo apt-get install vim
    sudo apt-get install openssh-server

查看ssh状态

sudo ps -e | grep ssh

如果有sshd,说明ssh服务已经启动



如果ssh关闭了,可以使用开启服务

    service ssh start

第五步:开始准备克隆

这时候,虚拟机,安装了JDK,vim,ssh,里面保存了Hadoop安装文件,这个时候,我们就可以进行虚拟机的克隆。



克隆两台,分别为Slave1和Slave2.
这时候显示如下:
这时候,三台机器的ip分别为:(Master) 192.168.175.128,(Slaver1)192.168.175.131,(Slaver2)192.168.175.132
Master:


Slaver1:

Slaver2:

这时候配置host文件,这样每台机器就能根据名字做IP地址的映射

第六步:配置免SSH

配置的SSH的原因是,比如Hadoop需要访问另一台机器,这时候如果不需要密码能直接连接该多好,这就是配置SSH免密码登录的原因。

ssh-keygen -t rsa

Master:

Master秘钥存放:

Slaver1和秘钥存放:

Slaver2 和秘钥存放:


这时候在目录:~/.ssh下生成了公钥和私钥,谁有了这个公钥,就能访问这台机器不需要密码了,所以三台机器的公钥是共享的。在这里我们发现没有authorized_keys 文件夹,所以直接用命令追加。

cat id_rsa.pub >> authorized_keys

重启
登录

ssh localhost  


这时候如果需要这台机器配置互相免密码登录:
原理如下:A若想无密码访问B,就需要把公钥发送给B,B把A发来的公钥添加到自己的授权文件里。所以步骤如下:

1.将Slaver1和Slaver2的公钥都发给Master,Master在自己的授权追加。
命令如下:

scp ~/.ssh/id_rsa.pub bigger@192.168.175.128:~/Desktop

复制桌面,比较感性

传输完成后

此时,进行追加:

 cat ~/Desktop/id_rsa.pub /home/bigger/.ssh/authorized_keys

这时候,配置的Slaver1:192.168.175.131的公钥,所以,检验是否能免密码:



IP变化了,所以登录成功!

同理。增加Slaver2的机器到Master:
传输:



追加:

检验:

这时候,Master的文件有三个机器的公钥,后续直接复制到每台机器并追加即可。

  • 首先将授权文件复制到桌面
  • 传给每台机器
  • 追加公钥
cat /home/bigger/Desktop/authorized_keys /home/bigger/.ssh/authorized_keys 

验证:
登录Master:


登录Slaver2:


对于Slaver2重复上述,至此,免ssh配置完成!


最后是权限修改:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys


第七步:开始Hadoop安装的配置!

  • 复制解压后的Hadoop文件到/lib文件夹下面


  • 配置Hadoop的配置文件,Hadoop2.6的配置文件在
    /hadoop-2.6.0/etc/hadoop下面


  • 配置涉及7个文件
    ~/hadoop/etc/hadoop/hadoop-env.sh
    ~/hadoop/etc/hadoop/yarn-env.sh
    ~/hadoop/etc/hadoop/slaves
    ~/hadoop/etc/hadoop/core-site.xml
    ~/hadoop/etc/hadoop/hdfs-site.xml
    ~/hadoop/etc/hadoop/mapred-site.xml
    ~/hadoop/etc/hadoop/yarn-site.xml
  • 配置文件
    1.hadoop-env.sh
    该文件是hadoop运行基本环境的配置,需要修改的为java虚拟机的位置。
    故在该文件中修改JAVA_HOME值为本机安装位置
    export JAVA_HOME=/lib/jdk


2.yarn-env.sh
该文件是yarn框架运行环境的配置,同样需要修改java虚拟机的位置。
在该文件中修改JAVA_HOME值为本机安装位置
export JAVA_HOME=/lib/jdk

3.修改slaves文件
添加
slaver1
slaver2

4:core-site.xml

这个是hadoop的核心配置文件,这里需要配置的就这两个属性,fs.default.name配置了hadoop的HDFS系统的命名,位置为主机的9000端口;hadoop.tmp.dir配置了hadoop的tmp目录的根位置。这里使用了一个文件系统中没有的位置,所以要先用mkdir命令新建一下。

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop-${user.name}</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property></configuration>

5:hdfs-site.xml
这个是hdfs的配置文件,dfs.http.address配置了hdfs的http的访问位置;dfs.replication配置了文件块的副本数,一般不大于从机的个数。

<configuration>
<property>
<name>dfs.http.address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name><value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

6:mapred-site.xml
这个是mapreduce任务的配置,由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置为yarn。mapred.map.tasks和mapred.reduce.tasks分别为map和reduce的任务数,至于什么是map和reduce,可参考其它资料进行了解。
其它属性为一些进程的端口配置,均配在主机下。

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
 </property>
<property>
<name>mapred.map.tasks</name>
<value>20</value>
</property><property>
<name>mapred.reduce.tasks</name>
<value>4</value>
</property><property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name><value>master:10020</value>
</property>
<property><name>mapreduce.jobhistory.webapp.address</name><value>master:19888</value>
</property>
</configuration>

配置文件7:yarn-site.xml
该文件为yarn框架的配置,主要是一些任务的启动位置

<configuration>
<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.webapp.address</name>
 <value>master:8088</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.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property>
</configuration>

将这些文件都复制到所有节点中
第八步:启动和验证

  • 进行格式化:
    sudo ./bin/hdfs namenode -format


  • 启动hdfs:
    ./sbin/start-dfs.sh
    此时在Master上面运行的进程有:namenode secondarynamenode
    Slave1和Slave2上面运行的进程有:datanode
    启动yarn: ./sbin/start-yarn.sh
    此时在Master上面运行的进程有:namenode secondarynamenode resourcemanager

Slave1和Slave2上面运行的进程有:datanode nodemanager

  • 检查启动结果
    查看集群状态:./bin/hdfs dfsadmin –report
    查看文件块组成: ./bin/hdfsfsck / -files -blocks
    查看HDFS: http://master:50070(主机IP)
    查看RM: http:// master:8088(主机IP)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容