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

[经验分享] hadoop 2.x安装:完全分布式安装

[复制链接]

尚未签到

发表于 2017-12-17 15:33:17 | 显示全部楼层 |阅读模式
1. 安装环境
  本文使用三台CentOS6.4虚拟机模拟完全分布式环境。
  
前五个过程和hadoop1.x安装相同

1.1. 安装环境

项目
参数
主操作系统 
 Windows 10 64 bit,8GB内存
虚拟软件
 VMware® Workstation 12 Pro 12.5.2
虚拟机操作系统
CentOS6.5 64位 512MB内存
虚拟机数量
3
jdk版本
java version "1.8.0_131"
安装的hadoop版本
hadoop-2.7.4
1.2. 集群环境
  集群包含三个节点:1个namenode、2个datanode

主机名称
主机IP
节点类型
hadoop账号
tiny01
192.168.132.101
namenode
grid
tiny02
192.168.132.102
datanode
grid
tiny03
192.168.132.103
datanode
grid  在我们的测试机上,我们使用三台虚拟机来模拟linux。我们下文中称之为tiny01、tiny02、tiny03

2. 配置hosts文件
  我们希望三个主机之间都能够使用主机名称的方式相互访问而不是IP,我们需要在hosts中配置其他主机的host。因此我们在三个主机的/etc/hosts下均进行如下配置:
  
1. 打开hosts文件
  

[iyunv@tiny01 ~]# vi /etc/hosts  

  2. 配置主机host
  

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  
192.168.132.101 tiny01
  
192.168.132.102 tiny02
  
192.168.132.103 tiny03
  

  3. 将配置发送到其他主机(同时在其他主机上配置)
  

[iyunv@tiny01 ~]# scp /etc/hosts root@tiny02:/etc/hosts  
[iyunv@tiny01 ~]# scp /etc/hosts root@tiny03:/etc/hosts
  

  4. 测试
  

[iyunv@tiny01 ~]$ ping tiny01  
[iyunv@tiny01 ~]$ ping tiny02
  
[iyunv@tiny01 ~]$ ping tiny03
  

3.建立hadoop运行账号
  我们在所有的主机下均建立一个grid账号用来运行hadoop ,并将其添加至sudoers中
  
创建grid账号的命令如下
  

[iyunv@tiny01 ~]# useradd grid  
[iyunv@tiny01 ~]# # 通过手动输入修改密码
  
[iyunv@tiny01 ~]# passwd --stdin grid
  
更改用户 grid 的密码 。
  
123456
  
passwd: 所有的身份验证令牌已经成功更新。
  

  添加grid组到sudo中,在其中添加下面一行:
  

[iyunv@tiny01 ~]# visudo  
%grid   ALL=(ALL)       NOPASSWD:ALL
  

  改行意思为,组:grid内的用户允许免密码使用sudo命令
  
测试:
  

[iyunv@tiny01 ~]# su admin  
[admin@tiny01 root]$ su grid
  
密码:
  
[grid@tiny01 root]$
  

4. 设置SSH免密码登陆
  关于ssh免密码的设置,要求每两台主机之间设置免密码,自己的主机与自己的主机之间也要求设置免密码。 这项操作我们需要在hadoop用户下执行。
  

[iyunv@tiny01 ~]# su grid  
[grid@tiny01 ~]# ssh-keygen -t rsa
  
[grid@tiny01 ~]# ssh-copy-id tiny01
  
[grid@tiny01 ~]# ssh-copy-id tiny02
  
[grid@tiny01 ~]# ssh-copy-id tiny03
  

  我们在每一台主机上执行如上命令。我们的设置结果如下,在每一台主机grid用户中的~/.ssh/authorized_keys文件中,其内容均为:
  

  
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAs5s4u1SHzkeqHHMozFWyqFj/qKwn57Gm8tpvOxSRY+5xqdEonJGvQ71AF+EOvttz/qBgEGB3UX2jp7YVIcKcc9WDoJXrb2NuBKbnP0zywDCsVQj/4KC7rQzG7YF2x8xueuDrW8nSxmNF1cYfENtYKpIITtL3cwAaVBBgwZJFTj9QN8/cMorG5aclMCETeklpUhGkSZ5Ccjc0FfGNKhnQntPqPVMBbDaSrJ31T7eONlIRymBJufAengHWYFGkEm/mnktxeDxDpVgLSEhbvwRUOeQUZzGfRcpdWwGFyQNoPTfCYKPpaQsJT7tCB97VY6aAZiaNqoN0kLEvKVAYLyhaJQ== grid@tiny01
  

  
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAs0uMn5wpUJNqxi++3i2WQu9KSv7Mj2Za4yu/8pXGFDxIEJCNEgREnfSAdrmpftRjp083RV3842zp2fqpbcE335fma7VbIcSqq20cQhWFyB1dZFP+H+f4+RbC5g31Hk5YG+DDY5dEm2B3RLDpLt0FukJcc0smN56ZwQ3JUXxe9ip8slTvtMr2ptvSg86cy+Eu7Gwt+7XHCNYIrxCzv7YQ0WilzvEpHP09wRp/K15HFHh+mTimxN2z4QERNMg77hNYEdEVrOVIhMztgakuhhSkpbyskkQuTeiyvKTLd/QL4iSFjt7dB1nieVFWCRP2yY2AsjD8nbHarBrgYojS/kslCw== grid@tiny02
  

  
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAy4h+XIl/IR8/QxtCxW8xl8QOqqZQWlL+rsI2zlhgTb+6dN4B6CE+u3/SrU8c8tLJSAXuRTg+MohIABrKRpFuu8VCLHw27JZ21c9KXpncAe+wkv3vagbH1lfxyYnBGn5XY6MEhNTx7nyBL7O55GNA92kD+JIEGvVF+NUq8yBJDBqeVFoFPU6FARI3OJi1Hlh47+gjIAIp2SP8QEhvjm+katL4+KtGgyHMkw8OYYzW6t6wjzmqgIRdzkIZI0Q0ChC8wAl8wkhwYXnbdw6m4pgSnVJ0zBhQZ5ovCHF3FR0OsrXpoe/2tpjT4LG04khTpqt2T4PC36No3dhcd/9wAw4+4Q== grid@tiny03
  

5. 安装jdk
  此过程在root下进行
  

[grid@tiny01 ~]$  
[grid@tiny01 ~]$ su root
  
密码:
  

  

5.1 下载并解压jdk
  我们需要先下载并解压jdk,注意jdk的下载地址是经常变动的,因此请不要直接用下面的地址下载,下载时请先查看一下地址。
  1. 创建java的安装路径
  

[iyunv@tiny01 grid]# mkdir /usr/java  
[iyunv@tiny01 grid]# cd /usr/java
  

  2. 下载jdk
  
点击Java SE Development Kit 8 Downloads,点击同意后下载jdk-8u141-linux-x64.tar.gz(不同的版本也可以用相同的方式),复制下来下载链接
  
然后使用wget 下载链接的方式下载jdk
  例如:
  

[iyunv@tiny01 java]#  wget http://download.oracle.com/otn-pub/java/jdk/8u131-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u131-linux-x64.tar.gz?AuthParam=1488850152_387f1ee536313aeb1ffd212acd203c87  

  3. 解压jdk解压后删除安装包
  

[iyunv@tiny01 java]# tar -xzvf jdk-8u131-linux-x64.tar.gz\?AuthParam\=1497245763_bb5c713b336123c5d38ef99896a12489  
[iyunv@tiny01 java]# rm -f jdk-8u131-linux-x64.tar.gz\?AuthParam\=1497245763_bb5c713b336123c5d38ef99896a12489
  

  4. 查看jdk的地址
  

[iyunv@tiny01 java]# cd jdk1.8.0_131/  
[iyunv@tiny01 jdk1.8.0_131]# pwd
  
/usr/java/jdk1.8.0_131
  

  5.配置环境变量
  
在/etc/profile文件中配置JAVA_HOME和PATH
  

[iyunv@tiny01 jdk1.8.0_131]# vi /etc/profile  

  添加
  

export JAVA_HOME=/usr/java/jdk1.8.0_131  
export PATH=$PATH:/usr/java/jdk1.8.0_131/bin
  

  6.测试
  
运行java -version检测配置是否成功
  

[iyunv@tiny01 jdk1.8.0_131]# java -version  
java version "1.8.0"
  
gij (GNU libgcj) version 4.4.7 20120313 (Red Hat 4.4.7-18)
  

  
Copyright (C) 2007 Free Software Foundation, Inc.
  
This is free software; see the source for copying conditions.  There is NO
  
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  

  安装成功

5.2 向其他节点复制jdk
  

[iyunv@tiny01 ~]# ssh root@tiny02 "mkdir /usr/java"  
[iyunv@tiny01 ~]# ssh root@tiny03 "mkdir /usr/java"
  

  
[iyunv@tiny01 ~]# scp -r /usr/java/jdk1.8.0_131 root@tiny02:/usr/java/jdk1.8.0_131
  
[iyunv@tiny01 ~]# scp -r /usr/java/jdk1.8.0_131 root@tiny03:/usr/java/jdk1.8.0_131
  

5.3 在各个主机下配置jdk的环境变量
  编辑/etc/profile文件
  

[iyunv@tiny01 ~]# vi /etc/profile  

  在该文件下添加如下内容
  

## JAVA_HOME 设置  
export JAVA_HOME=/usr/java/jdk1.8.0_131
  
export PATH=$PATH:/usr/java/jdk1.8.0_131/bin
  

  在每个主机下均进行设置,由于我的电脑上linux都是新安装的,环境变量相同,因此直接复制到了其他主机上。如果不同的主机的环境变量不同,请手动设置
  

[iyunv@tiny01 hadoop]# scp /etc/profile root@tiny02:/etc/profile  
[iyunv@tiny01 hadoop]# scp /etc/profile root@tiny03:/etc/profile
  

  在每个主机上都重新编译一下/etc/profile
  

[iyunv@tiny01 hadoop]# source /etc/profile  

5.4 测试
  

[iyunv@tiny01 hadoop]# java -version  
java version "1.8.0_131"
  
Java(TM) SE Runtime Environment (build 1.8.0_131-b13)
  
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b13, mixed mode)
  

  成功
  (如果版本不对应,那么说明linux本身已经有了默认的jdk,则需要修改linux默认jdk版本:修改linux默认jdk版本,由于我这里安装的是最小化安装,所以没有默认的jdk)

6. 下载并解压hadoop
  在linux控制台下载hadoop并将其解压
  1.切换回grid用户
  

[iyunv@tiny01 jdk1.8.0_131]# su grid  

  2.创建hadoop目录并进入到该目录中
  

[grid@tiny01 ~]$ sudo mkdir /opt/hadoop  
[grid@tiny01 ~]$ sudo chown grid:grid /opt/hadoop
  
[grid@tiny01 ~]$ cd /opt/hadoop
  
[grid@tiny01 hadoop]$
  

  3.下载并解压hadoop
  

[grid@tiny01 hadoop]$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz  
[grid@tiny01 hadoop]$ tar -xzvf hadoop-2.7.4.tar.gz
  

7. 修改配置文件
  hadoop2.x的配置文件和hadoop1.x的配置文件并不相同,因此我们有不同的设置方法。
  以上个别文件默认不存在的,可以复制相应的template文件获得。
  
我们不需要修改master了
  注意:在hadoop2.x中配置文件是放在etc下的

7.1. 修改hadooop-env.sh
  我们打开该文件:
  

vi hadoop-2.7.4/etc/hadoop/hadoop-env.sh  

  修改一下JAVA_HOME
  

# The java implementation to use.  Required.  
export JAVA_HOME=/usr/java/jdk1.8.0_131
  

7.2 修改yarn-env.sh
  打开该文件
  

vi hadoop-2.7.4/etc/hadoop/yarn-env.sh  

  修改JAVA_HOME的路径
  

# some Java parameters  
export JAVA_HOME=/usr/java/jdk1.8.0_131
  
if [ "$JAVA_HOME" != "" ]; then
  #echo "run java in $JAVA_HOME"
  JAVA_HOME=$JAVA_HOME
  
fi
  

  
if [ "$JAVA_HOME" = "" ]; then
  echo "Error: JAVA_HOME is not set."
  exit 1
  
fi
  

7.3 修改slaves文件
  打开该文件
  

vi hadoop-2.7.4/etc/hadoop/slaves  

  修改为以下内容
  

tiny02  
tiny03
  

7.4 修改core-site.xml文件
  打开该文件
  

vi hadoop-2.7.4/etc/hadoop/core-site.xml  

  修改为以下内容(注意主机名和文件路径)
  

<configuration>  
<property>
  
<name>fs.defaultFS</name>
  
<value>hdfs://tiny01:9000</value>
  
</property>
  
<property>
  
<name>io.file.buffer.size</name>
  
<value>131072</value>
  
</property>
  
<property>
  
<name>hadoop.tmp.dir</name>
  
<value>file:/opt/hadoop/hadoop-2.7.4/tmp</value>
  
<description>Abase for other temporary directories.</description>
  
</property>
  
<property>
  
<name>hadoop.proxyuser.hduser.hosts</name>
  
<value>*</value>
  
</property>
  
<property>
  
<name>hadoop.proxyuser.hduser.groups</name>
  
<value>*</value>
  
</property>
  
</configuration>
  

7.5 修改hdfs-site.xml文件
  打开该文件
  

vi hadoop-2.7.4/etc/hadoop/hdfs-site.xml  

  修改为以下内容(注意主机名和文件路径)
  

<configuration>  
<property>
  
<name>dfs.namenode.secondary.http-address</name>
  
<value>tiny01:9001</value>
  
</property>
  
<property>
  
<name>dfs.namenode.name.dir</name>
  
<value>file:/opt/hadoop/hadoop-2.7.4/name</value>
  
</property>
  
<property>
  
<name>dfs.datanode.data.dir</name>
  
<value>file:/opt/hadoop/hadoop-2.7.4/data</value>
  
</property>
  
<property>
  
<name>dfs.replication</name>
  
<value>1</value>
  
</property>
  
<property>
  
<name>dfs.webhdfs.enabled</name>
  
<value>true</value>
  
</property>
  
</configuration>
  

7.6 复制并修改mapred-site.xml文件
  复制并打开该文件
  

cp hadoop-2.7.4/etc/hadoop/mapred-site.xml.template hadoop-2.7.4/etc/hadoop/mapred-site.xml  
vi hadoop-2.7.4/etc/hadoop/mapred-site.xml
  

  修改为以下内容(注意主机名)
  

<configuration>  
<property>
  
<name>mapreduce.framework.name</name>
  
<value>yarn</value>
  
</property>
  
<property>
  
<name>mapreduce.jobhistory.address</name>
  
<value>tiny01:10020</value>
  
</property>
  
<property>
  
<name>mapreduce.jobhistory.webapp.address</name>
  
<value>tiny01:19888</value>
  
</property>
  
</configuration>
  

7.7 修改yarn-site.xml文件
  打开该文件
  

vi hadoop-2.7.4/etc/hadoop/yarn-site.xml  

  修改为以下内容(注意主机名)
  

  
<configuration>
  
<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>
  
<property>
  
<name>yarn.resourcemanager.address</name>
  
<value>tiny01:8032</value>
  
</property>
  
<property>
  
<name>yarn.resourcemanager.scheduler.address</name>
  
<value>tiny1:8030</value>
  
</property>
  
<property>
  
<name>yarn.resourcemanager.resource-tracker.address</name>
  
<value>tiny01:8031</value>
  
</property>
  
<property>
  
<name>yarn.resourcemanager.admin.address</name>
  
<value>tiny01:8033</value>
  
</property>
  
<property>
  
<name>yarn.resourcemanager.webapp.address</name>
  
<value>tiny01:8088</value>
  
</property>
  
</configuration>
  

8. 创建文件夹
  

[grid@tiny01 hadoop]$ mkdir hadoop-2.7.4/tmp  
[grid@tiny01 hadoop]$ mkdir hadoop-2.7.4/name
  
[grid@tiny01 hadoop]$ mkdir hadoop-2.7.4/data
  

9.向各节点复制hadoop
  

[grid@tiny01 hadoop]$ scp -r /opt/hadoop root@tiny02:/opt/  
[grid@tiny01 hadoop]$ ssh root@tiny02 "chown -R grid:grid /opt/hadoop"
  
[grid@tiny01 hadoop]$ scp -r /opt/hadoop root@tiny03:/opt/
  
[grid@tiny01 hadoop]$ ssh root@tiny03 "chown -R grid:grid /opt/hadoop"
  

10. 关闭master的防火墙
  在master(tiny01)下,切换为root用户查看防火墙的状态
  

[iyunv@tiny01 grid]# service iptables status  
表格:filter
  
Chain INPUT (policy ACCEPT)
  
num  target     prot opt source               destination

  
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state>  
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
  
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
  
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
  
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
  

  
Chain FORWARD (policy ACCEPT)
  
num  target     prot opt source               destination
  
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
  

  
Chain OUTPUT (policy ACCEPT)
  
num  target     prot opt source               destination
  

  

  如果防火墙显示如上面类似,那么说明防火墙处于开启状态,我们需要关闭防火墙(这个命令是暂时关闭防火墙)
  

[iyunv@tiny01 grid]# service iptables stop  
iptables:清除防火墙规则:                                 [确定]
  
iptables:将链设置为政策 ACCEPT:filter                    [确定]
  
iptables:正在卸载模块:                                   [确定]
  
[iyunv@tiny01 grid]# service iptables status
  
iptables:未运行防火墙。
  

  如果没有关闭防火墙,那么slave(tiny02,tiny03)将无法连接到master

11. 格式化namenode
  切换回grid用户
  

hadoop-2.7.4/bin/hdfs namenode -format  

12. 启动hadoop
  我们可以使用 ./sbin/start-all.sh启动全部进程 ,在tiny01中:
  

hadoop-2.7.4/sbin/start-all.sh  

13.测试
  我们使用java安装目录下的bin/jps检查当前运行的进程
  
在tiny1中:
  

[hadoop@tiny1 hadoop]$ jps  
2023 Jps
  
1431 NameNode
  
1613 SecondaryNameNode
  
1757 ResourceManager
  

  在tiny2中:
  

[hadoop@tiny2 ~]$ jps  
1296 NodeManager
  
1236 DataNode
  
1453 Jps
  

  在tiny3中:
  

[hadoop@tiny3 ~]$ jps  
1427 Jps
  
1270 NodeManager
  
1210 DataNode
  

  运行成功!

运维网声明 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-425045-1-1.html 上篇帖子: 佳佳牛 下篇帖子: eclipse与hadoop集成,运行wordCount1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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