您的位置:首页 > 运维架构

hadoop集群搭建之一(Hadoop环境安装)

2015-03-24 18:45 429 查看
集群环境:

操作系统:CentOS 6.4

软件版本:jdk-7u21-linux-x64.bin , hadoop-2.6 .tar.gz(由于需要支持hbase1.0.0,java版本需要修改为1.7以上的版本)

集群架构:包括4个节点:1个master,3个salve,节点之间局域网连接,可以相互ping通。节点IP地址

分布如下:

主机名

IP
系统版本
Hadoop node
hadoop进程名
master.hadoop
192.168.0.1
CetOS 6.4
master
namenode,resourcemanager
slave1.hadoop
192.168.0.2
CetOS 6.4
slave1
datanode,datamanager
slave2.hadoop
192.168.0.3
CetOS 6.4
slave2
datanode,datamanager
slave3.hadoop
192.168.0.4
CetOS 6.4
slave3
datanode,datamanager

新建Hadoop用户

分别在master和slave上新建hadoop用户。

#useradd hadoop
#passwd hadoop

安装JDK

下载jdk-6u45-linux-x64.bin,修改文件权限使其可执行,然后执行下面命令:

#/bin/bash jdk-7u21-linux-x64
#mv jdk1.7.0_21 /usr/local/


改变Java的权限,赋予hadoop用户读写执行权限

chown   hadoop:hadoop jdk1.7.0_21 -R


添加java环境变量:
#vim /etc/profile
#文件最后添加

# set java environment
export JAVA_HOME=/usr/local/jdk1.7.0_21/
export JRE_HOME=/usr/local/jdk1.7.0_21/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

生效java变量:
#source /etc/profile
# java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build1.7.0_21-b06)
Java HotSpot(TM) 64-Bit Server VM(build 20.21-b01, mixed mode)

配置主从节点

配置网络参数:

以主节点为例,在master主机上,终端vim打开/etc/sysconfig/nework-scripts/ifcfg-eth0 添加IP地址信息:

IPADDR=192.168.0.1
PREFIX=24


配置完个节点网络参数后,执行下面的命令使修改生效:

service network restart


配置hosts文件:

这个文件是用来配置主机用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。
主节点机器上,/etc/hosts"文件末尾中都要添加如下内容:

192.168.0.1 master.hadoop
192.168.0.2 slave1.hadoop
192.168.0.3 slave2.hadoop
192.168.0.4 slave3.hadoop
从节点机器上,只添加主节点信息和本机信息,这里以slave1为例:

192.168.0.1  master.hadoop
192.168.0.2  slave1.hadoop


配置master无密码登录slave

master作为客户端,要实现无密码公钥认证,连接到服务器slave上时,需要在master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的slave上。当master通过SSH连接slave时,slave就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给master。master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端master复制到slave上。

在master节点上执行以下的命令:

ssh-keygen –t rsa

此命令用于生成其无密码密钥对,一直回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下。

接着把id_rsa.pub追加到授权的key里面去。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys


修改文件"authorized_keys"权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),用root用户修改"/etc/ssh/sshd_config"的内容。具体操作如下:

改变权限(这一点必须注意,主从节点上权限必须改成这个,不然无法实现无密码ssh登录)

chmod 600 ~/.ssh/authorized_keys


配置ssh

打开文件/etc/ssh/sshd_config,修改如下的选项:

RSAAuthenticationyes # 启用RSA 认证
PubkeyAuthenticationyes # 启用公钥私钥配对认证方式
AuthorizedKeysFile.ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)


重启ssh服务:

service sshd restart


公钥复制所有的slave机器上

使用如下的命令:

scp ~/.ssh/authorized_keys hadoop@远程服务器IP:~/


复制到slave后,在"/home/hadoop/"下创建".ssh"文件夹,然后是修改文件夹".ssh"的用户权限,把权限修改为"700",将authorized_keys移动到.ssh目录下,并修改权限为644

chmod 644 ~/.ssh/authorized_keys


然后用root用户修改"/etc/ssh/sshd_config"。具体步骤参考前面master中的设置。设置完成后,重启ssh服务。

然后ssh登录slave,如果出现:

Agent admit failure to sign using the key


在主节点上需要添加ssh的私钥到列表,执行下面的命令:

ssh-add ~/.ssh/id_isa

hadoop集群的安装

安装hadoop

首先用root用户登录master节点,解压缩hadoop-2.6 .tar.gz到/usr/local下,修改文件目录为hadoop。然后把"/usr/local/hadoop“的读写执行权限分配给hadoop用户:

chown hadoop:hadoop/usr/local/hadoop  -R

把Hadoop的安装路径添加到"/etc/profile"中,修改"/etc/profile"文件,将以下语句添加到末尾,并使其有效:

# set hadoop path
exportHADOOP_HOME=/usr/hadoop
exportPATH=$PATH :$HADOOP_HOME/bin


在/usr/local目录下新建hadoopdata目录,用于hdfs数据存放

mkdir -p /usr/local/hadoopdata


配置hadoop,所有的配置文件均在"/usr/local/hadoop/etc/hadoop"目录下。

配置hadoop-env.sh

在文件的末尾添加下面内容:

# set java environment
export JAVA_HOME=/usr/local/jdk1.7.0_21/


配置core-site.xml文件

修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS的地址和端口号。

<configuration>
   <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoopdata</value>
        <!--<description>A base for other temporary directories.</description>-->
    </property>
    <!-- file system properties -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master.hadoop:9000</value>
    </property>
    <property>
       <name>io.file.buffer.size</name>
       <value>131072</value>
    </property>

    <property>
      <name>hadoop.native.lib</name>
      <value>true</value>
   </property>
   <property>
       <name>fs.checkpoint.period</name>
           <value>3600</value>
      <description>The number of seconds between two periodic checkpoints.</description>
   </property>
   <property>
          <name>fs.checkpoint.size</name>
          <value>67108864</value>
          <description>The size of the current edit log (in bytes) that triggers a periodic checkpoint even if the fs.checkpoint.period hasn't expired.  </description>
   </property>
   <property>
          <name>fs.checkpoint.dir</name>
          <value>/usr/local/hadoopdata/dfs/namesecondary</value>
          <description>Determines where on the local filesystem the DFS secondary namenode should store the temporary images to merge.If this is a comma-delimited list of directories then the image is replicated in all of the directories for redundancy.</description>
  </property>
  <property>
    <name>hadoop.proxyuser.spark.hosts</name>
      <value>*</value>
   </property>
   <property>
      <name>hadoop.proxyuser.spark.groups</name>
         <value>*</value>
   </property>
</configuration>


配置hdfs-site.xml文件

<configuration>
<property>
<name>dfs.nameservices</name>
<value>hadoop-cluster1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master.hadoop:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/hadoopdata/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/hadoopdata/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>


配置mapred-site.xml文件

<configuration>
   <property>
         <name>mapreduce.framework.name</name>
         <value>yarn</value>
    </property>
    <property>
         <name>mapreduce.jobtracker.http.address</name>
         <value>master.hadoop:50030</value>
    </property>
    <property>
          <name>mapreduce.jobhistory.address</name>
          <value>master.hadoop:10020</value>
     </property>
     <property>
            <name>mapreduce.jobhistory.webapp.address</name>
             <value>master.hadoop:19888</value>
      </property>
      <property>
           <name>mapred.job.tracker</name>
           <value>http://master.hadoop:9001</value>
       </property>
</configuration>

配置yarn-site.xml

<span style="color:#000000;"><configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master.hadoop</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>
<property>
<name>yarn.resourcemanager.address</name>
<value>master.hadoop:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master.hadoop:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master.hadoop:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master.hadoop:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master.hadoop:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>master.hadoop:8090</value>
</property>
</configuration></span>


配置masters文件

在配置目录下新建masters文件,写入master的ip地址,比如使用more命令查看masters文件的内容如下:

192.168.0.1
配置slaves文件

在配置目录下新建slaves文件,加入集群中所有slave机器的ip。内容如下:

192.168.0.2
192.168.0.3
192.168.0.4
至此master节点上hadoop的配置完成。

接下来将配置好的hadoop文件主从节点之间通过nfs进行复制,同样在每个节点上将hadoop文件复制到/usr/local目录下。同时将java也复制到此目录下。然后将环境变量写到/etc/profile文件的末尾。修改hadoop以及java文件为hadoop用户所有。

至此完成了hadoop集群的搭建工作,接下来将会对其进行验证~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: