Hadoop2.5.2 64bit 完全分布式安装

4 篇文章 0 订阅
2 篇文章 0 订阅

Hadoop2.5.2 64bit 完全分布式安装

 

1.        安装环境

Windows 7 64bit
VMware Workstation 10
CentOS6.5  64bit
jdk版本: jdk-7u9-linux-x64.tar.gz

hadoop版本: hadoop-2.5.2-src.tar.gz

 

hadoop集群3个节点,一主两从,如下:

角色

ip

用户

运行进程

master

192.168.1.100

hadoop

JobHistoryServer,ResourceManager,

NameNode,NodeManager,DataNode,Main

Slave01

192.168.1.101

hadoop

NodeManager,DataNode

Slave02

192.168.1.102

hadoop

NodeManager,DataNode

 

1.  关闭防火墙

vi  /etc/selinux/config

在 SELINUX=enforcing 前面加个#号注释掉它
#SELINUX=enforcing

然后新加一行SELINUX=disabled

保存,退出,重启系统,就可以彻底关闭firewall了。

 

2.  修改IP

vi /etc/sysconfig/network-scripts/ifcfg-eth0  

 #编辑配置文件,添加修改以下内容

BOOTPROTO=static  #启用静态IP地址

 ONBOOT=yes #开启自动启用网络连接

 IPADDR=192.168.1.100  #设置IP地址

 NETMASK=255.255.255.0  #设置子网掩码

 GATEWAY=192.168.1.1   #设置网关

 DNS1=8.8.8.8 #设置主DNS

 DNS2=192.168.1.1 #设置备DNS

 IPV6INIT=no #禁止IPV6

 :wq 保存。

 

下面的命令执行(可选)

service ip6tables stop   #停止IPV6服务

 chkconfig ip6tables off  #禁止IPV6开机启动

 service yum-updatesd stop   #关闭系统自动更新

 chkconfig yum-updatesd off  #禁止开启启动

 service network restart  #重启网络连接

 

出现的问题:

Ø  网络连接不上,重启网络后报以下的错误:没有找到可用于连接’System eth0’的设备。

 

解决方法:

 

CentOS虚拟机中启用不了eth0网卡解决办法:

1./etc/udev/rules.d/70-persistent-net.rules 文件

删除eth0网卡

将eth1网卡的NAME="eth1"修改为"eth0",并复制ATTR{address}中的值(MAC地址)

 如: 00:0c:29:c3:bd:59

2./etc/sysconfig/network-scripts/ifcfg-eth0 文件

将复制的ATTR{address}值覆盖#HWADDR

 

重启服务:servicenetwork restart

 

注: 修改网卡名称使用root用户登录,修改“/etc/udev/rules.d/70-persistent-net.rules”文件 --- (如果服务器没有此文件就跳过)。如果是虚拟机,没有此文件,就不用修改,主要是修改NAME="eth0"

 

三台虚拟机有一台不能上网:原因虚拟机上的ip与windows的ip相冲突了。(折腾了我一天呀,呜呜。)

注意:自己虚拟机上的ip不要与windows上的ip相冲突了,不然,虚拟机不能上网。

 

Ø  SSH连接centos 6.5 因超时而断开(启动的应用程序也会被终止)报以下错误信息:

 

解决方法:

在服务器端设置

如果有相应的权限,也可以在服务器端设置,即编辑/etc/ssh/sshd_config,并添加:

ClientAliveInterval60  (#此后该系统里的用户连接SSH时,每60秒会发一个KeepAlive请求,避免被踢。)

需要注意的是在服务器端设置后需要重启该服务器以使连接生效sudo reboot

重启后每一个连接到此服务器上的客户端都会受其影响。另外应注意启用该功能后,安全性会有一定下降(比如忘记登出时……

 

 

3.  设置机器hostname别名

设置别名的目的是机器间相互识别可以不用ip,配置文件中也可以不用ip,通用性上更强一些。

 

在 master 机器上面执行下面的命令:

# 当前ssh窗口即可生效

hostname master   

# 每次重启以后均生效

vi /etc/sysconfig/network       

HOSTNAME=master

 

同样,在 slave01 、slave02 机器上面执行相同的命令,只需要更改HOSTNAME的值:

如下:

HOSTNAME=slave01

HOSTNAME=slave02

添加Hosts映射关系,三台机器上面分别都执行操作 vi /etc/hosts 添加如下内容,之后在每台机器上面ping一下,确保能够连接彼此。

 

192.168.1.100 master

192.168.1.101 slave01

192.168.1.102 slave02

 

 

4.  配置集群之间SSH无密码登陆

1、为了hadoop集群的安全与方便管理,我们要另外新建用户,并设置密码,命令如下:

# 创建账号hadoop并赋予密码hadoop

sudo adduser hadoop

sudo passwd hadoop

 

删除用户

userdel – r hadoop

2、给hadoop账户赋予root权限 vi/etc/sudoers 添加如下:

hadoop  ALL=(ALL)       ALL

这里会报没有权限修改一个可读文件。

解决方法:

1.    修改/etc/sudoers文件,进入超级用户,因为没有写权限,所以要先把写权限加上chmod u+w /etc/sudoers b. 编辑/etc/sudoers文件,找到这一行:"root ALL=(ALL) ALL"在起下面添加" hadoop  ALL=(ALL)       ALL "(这里的hadoop  是你的用户名),然后保存。 c. 最后恢复没有写权限模式,撤销文件的写权限,chmod u-w /etc/sudoers

 


3、配置集群各个节点之间的ssh无密码互信,也就是从master开始,ssh到master(localhost)、slave01和slave02上都不需要密码,反向ssh到master同样,互信设置需要在hadoop用户下执行命令如下:

 

2.    创建或者修改密钥目录权限 (此操作在所有服务器完成后再进入下一步

假设本机的IP为“192.168.1.100”,配置免登录的操作步骤如下:

a.以hadoop用户登录各服务器。

b.执行以下命令,修改“.ssh 目录”权限。

chmod 755 ~/.ssh  

说明:如果“.ssh”目录不存在,请在/home/hadoop目录执行 mkdir ~/.ssh 命令创建。  

3.    创建公钥和私钥(此操作在所有服务器完成后再进入下一步)

a.以hadoop用户登录本机(假设本机的IP为“192.168.1.100”)。 

b.执行以下命令,进入“.ssh”目录。

cd /home/hadoop/.ssh  

c.执行以下命令后,如果提示,就一直按“Enter”键,直至生成公钥。   

    ssh-keygen -t rsa 

 

 

注:如果创建公钥和私钥后(黄色部分),提示的用户名hadoop@后面不是本机别名(上图红色部分),说明主机名称需要重新配置一次,然后记得重启,然后删除/.ssh目录下的公钥和私钥,重新生成,直到生成的密钥后缀是本机别名

          

(3)拷贝公钥到服务器(要登录上去的那台服务器)

 

1.       执行以下命令(假设本机是192.168.1.100),并根据提示输入登录密码,配置免登录。

从master登录到slave01

在主机名为master的机子上执行以下命令:

在cd  .ssh目录 下:

  scp id_rsa.pub hadoop@slave01:/home/hadoop/.ssh/authorized_keys

 

从slave01登录到master

在主机名为slave01的机子上执行以下命令:

在cd  .ssh目录 下:

scp id_rsa.pub hadoop@master:/home/hadoop/.ssh/authorized_keys


其它同理。

 

这样就将生成的授权秘钥拷贝到了slave01和slave02的/home/hadoop/.ssh目录下,从 master 机器 ssh到 slave01 、slave02 都不再需要密码了,同理,在slave01slave02机器上执行上面的命令即可完成slave01master之间的无密码登录。(其实,操作完后,slave01之间也是可以无密码登录的,只是不需要而已)

 

 

完成后,在节点master上ssh slave01看看能否无密码登录成功。同样的测试master到节点slave02是否能够无密码登录成功

现在是ssh ->slave01

      ssh->slave02

5.  配置 JDK 环境

# 解压到 /opt/下面
tar zxvf jdk-7u9-linux-x64.tar.gz -C /opt/
# 配置java环境,最好在全局 /etc/profile 配置中修改,这样所有用户均可以使用
vi /etc/profile

JAVA_HOME=/opt/jdk1.7.0_09
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME

使修改的配置立即生效,终端中执行source /etc/profile。
测试是否ok,执行命令which java,若出现/opt/jdk1.7.0_09/bin/java 表示已经ok 或者java-version ,出现java version "1.7.0_09" 也表明ok。

 

注:每个节点都要装jdk ,同理slave01、slave02

 

这里有可能报:无法 open: 没有那个文件或目录。-à(权限问题)解决方法:在 root下执行。

 

6.  安装maven

hadoop源码是使用maven组织管理的,必须下载maven。从maven官网下载,下载地址是http://maven.apache.org/download.cgi,选择 apache-maven-3.3.3-bin.tar.gz下载。

#解压到 /opt/下面
tarzxvf apache-maven-3.3.3-bin.tar.gz  -C/opt/

会生成一个文件夹apache-maven-3.0.5,然后设置环境变量中。
# 配置maven环境,最好在全局 /etc/profile 配置中修改,这样所有用户均可以使用
vi /etc/profile

执行命令vi /etc/profile,编辑结果如下图所示

JAVA_HOME=/opt/jdk1.7.0_09

MAVEN_HOME=/opt/apache-maven-3.3.3

export PATH=.:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

exportMAVEN_HOME

 

使修改的配置立即生效,终端中执行source /etc/profile

检验maven  is ok ?

mvn –version

 

 

7.  安装findbugs(可选步骤)

findbugs是用于生成文档的。如果不需要编译生成文档,可以不执行该步骤。从findbugs官网下载findbugs,下载地址是http://sourceforge.jp/projects/sfnet_findbugs/releases/,选择findbugs-noUpdateChecks-3.0.1.tar.gz下载。

执行以下命令解压findbugs到 /opt/下面
tar zxvf findbugs-noUpdateChecks-3.0.1.tar.gz -C /opt/

会生成一个文件夹findbugs-3.0.1,然后设置环境变量中。

执行命令vi /etc/profile,编辑结果如下图所示

FINDBUGS_HOME=/opt/findbugs-3.0.1

JAVA_HOME=/opt/jdk1.7.0_09

MAVEN_HOME=/opt/apache-maven-3.3.3

exportPATH=.:$FINDBUGS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export MAVEN_HOME

export FINDBUGS_HOME

 

检验findbugs

findbugs –version

8.  安装protoc

hadoop使用protocol buffer通信,从protoc官网下载protoc,下载地址是https://code.google.com/p/protobuf/downloads/list,选择protobuf-2.5.0.tar.gz 下载。

为了编译安装protoc,需要下载几个工具,顺序执行以下命令

yuminstall gcc

yuminstall gcc-c++

yuminstall make

如果操作系统是CentOS6.5那么gcc和make已经安装了。其他版本不一定。在命令运行时,需要用户经常输入“y”。

然后执行以下命令解压缩protobuf

tarzxvf protobuf-2.5.0.tar.gz  -C /opt/

会生成一个文件夹protobuf-2.5.0,执行以下命令编译protobuf。

cd/opt/protobuf-2.5.0

./configure --prefix=/usr/local/protoc/

make

make install

只要不出错就可以了。

执行完毕后,编译后的文件位于/usr/local/protoc/目录下,我们设置一下环境变量

FINDBUGS_HOME=/opt/findbugs-3.0.1

JAVA_HOME=/opt/jdk1.7.0_09

MAVEN_HOME=/opt/apache-maven-3.3.3

exportPATH=.:/usr/local/protoc/bin:$FINDBUGS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export MAVEN_HOME

export FINDBUGS_HOME

检查protoc

protoc –version

 

 

9.  安装Ant

执行以下命令解压ant到 /opt/下面
tar zxvf apache-ant-1.9.6-bin.tar.gz  -C/opt/

会生成一个文件夹apache-ant-1.9.6,然后设置环境变量中。

执行命令vi /etc/profile,编辑结果如下图所示

ANT_HOME=/opt/apache-ant-1.9.6

FINDBUGS_HOME=/opt/findbugs-3.0.1

JAVA_HOME=/opt/jdk1.7.0_09

MAVEN_HOME=/opt/apache-maven-3.3.3

exportPATH=.:$ANT_HOME/bin:/usr/local/protoc/bin:$FINDBUGS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export MAVEN_HOME

export FINDBUGS_HOME

export ANT_HOME

 

检视:ant -version

10.        编译hadoop源码

# 解压到 /opt/下面
tarzxvf hadoop-2.5.2-src.tar.gz -C /opt/

->会生成一个文件夹 hadoop-2.5.2-src

cd /opt/hadoop-2.5.2-src
->解压源码tar包,并进入解压后的根目录(下面的命令一定要在cd 进入源代码目录下进行,否则会出错)

mvn package -Pdist,native,docs –DskipTests-Dtar

mvn -X package -DskipTests -Pdist,native-Dtar  (如果出现错误可以加上-X显示错误详细信息:)

 注: cd 进入目录,more BUILDING.txt  可以看到编译hadoop 的详细命令,官方说明的编译命令是    mvn package -Pdist,native -DskipTests -Dtar  

但是在最新版的maven下可能会报错,所以我修改命令为  mvn cleanpackage -Pdist -Pnative -DskipTests -Dtar

当然一次编译成功几乎是不可能的,所以clean还是很有必要的,接下来就是等待,maven会下载各种jar包.

 

网络不给力花的时间太长了(接近一个小时)。

 

 

进入编译后的目录,可看到以下文件

cd/opt/hadoop-2.5.2-src/hadoop-dist/target/

 

在root用户下操作:

1.master/slave01/slave02 创建hadoop文件夹存放安装包和解压后的文件:

在master主机上

cd /home

mkdir hadoop

在slave01主机上

cd /home

mkdir hadoop

 

在slave02 主机上

cd /home

mkdir hadoop

 

将安装包scp到自己的机子上

cd/opt/hadoop-2.5.2-src/hadoop-dist/target/

 

scp hadoop-2.5.2.tar.gz root@192.168.1.100:/home/hadoop/

scp hadoop-2.5.2.tar.gz root@192.168.1.101:/home/hadoop/


 

scp hadoop-2.5.2.tar.gz root@192.168.1.102:/home/hadoop/

 

 2.解压安装包

cd /home/hadoop

tar -zvxf hadoop-2.5.2.tar.gz

 

每台节点都要安装hadoop。分别解压hadoop-2.5.2.tar.gz到三台机器的hadoop目录下。

 

3. 修改配置

cd /home/hadoop/hadoop-2.5.2/etc/hadoop

1)  vicore-site.xml

<configuration>

  <property>

    <name>hadoop.tmp.dir</name>

      <value>/home/hadoop/tmp</value>

    <description>Abase for other   temporary directories.</description>

  </property>

  <property>

    <name>fs.defaultFS</name>

    <value>hdfs://master:9000</value>

  </property>

  <property>

    <name>io.file.buffer.size</name>

    <value>4096</value>

  </property>

</configuration>

2)  vihdfs-site.xml

<configuration>

  <property>

    <name>dfs.nameservices</name>

      <value>hadoop-cluster1</value>

  </property>

  <property>

    <name>dfs.namenode.secondary.http-address</name>

    <value>master:50090</value>

  </property>

<property>

      <name>dfs.namenode.name.dir</name>

      <value>file:///home/hadoop/dfs/name</value>

  </property>

  <property>

      <name>dfs.datanode.data.dir</name>

    <value>file:///home/hadoop/dfs/data</value>

  </property>

  <property>

    <name>dfs.replication</name>

    <value>2</value>              --------------------------slave个数(注释去掉)

  </property>

  <property>

      <name>dfs.webhdfs.enabled</name>

    <value>true</value>

  </property>

</configuration>

3)  vimapred-site.xml

<configuration>

  <property>

      <name>mapreduce.framework.name</name>

    <value>yarn</value>

  </property>

  <property>

      <name>mapreduce.jobtracker.http.address</name>

    <value>master:50030</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>

 4) vi yarn-site.xml

<configuration> 

 

<!-- Site   specific YARN configuration properties -->   

    <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>

5) vi slaves  

删掉localhost

输入

master  (这样master本身也作为一个dataNode)

slave01

slave02

6) vi hadoop-env.sh

修改为:exportJAVA_HOME=/opt/jdk1.7.0_09

7) vi yarn-env.sh

添加 export JAVA_HOME=/opt/jdk1.7.0_09

8)  将主机配置scp到两台slave上(避免后面两台机器再做重复的操作)

cd/home/hadoop/hadoop-2.5.2/etc

scp-r  hadoop root@slave01:/home/hadoop/hadoop-2.5.2/etc

scp-r  hadoop root@slave02:/home/hadoop/hadoop-2.5.2/etc

9). 主机上格式化文件系统

cd /home/hadoop/hadoop-2.5.2

bin/hdfs namenode -format 

(格式化过程中会有一次需要输入yes)

10).启动

sbin/start-dfs.sh

sbin/start-yarn.sh(或者sbin/start-all.sh)

 

?这里有问题

 

 

6. 通过浏览器访问

http://192.168.1.100:50070/

http://192.168.1.100:8088/

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值