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

hadoop2.7.1在ubuntu上的集群配置

2015-10-30 11:12 330 查看
一、节点分配

三部在VM上建立的Ubuntu虚拟机,上网方式用的NAT,使用Hadoop的用户名都叫hadoop,主机名、ip配置如下

主机名IP
master192.168.226.160
slave1192.168.226.161
slave2192.168.226.162
二、预装软件

我当然不是一台一台配置的,是先配置好一台的基础配置然后再复制的,先添加了一个叫hadoop的普通用户,等会用来放hadoop,下面介绍一些必备的软件:

需要预装:ssh、rsync、jdk7+

ssh和rsync,ubuntu里本来就有,想知道没有直接在终端输入ssh、rsync测试一下就好了,但是我的ssh服务好像没运行,当时我以为不能用,又apt-get install ssh了一下,其实既然发现安装了就应该自己去开,不会可以搜啊,这里我是偷懒了。

安装jdk7+,可以去官网下载,我是装的jdk7,主要是官网下不下来,不知道要不要翻墙,就直接用的旧的。

三、JAVA环境配置

首先配置java运行环境,我下的是因为考虑到可能所有用户都要用java,这里用管理员权限先把jdk的压缩包解压到/usr/local/中

然后配置环境变量,在/etc/profile后面加上下面两行就好了:

export PATH=$PATH:/usr/local/jdk1.7.0_07/bin
export JAVA_HOME=/usr/local/jdk1.7.0_07/
然后‘ source /etc/profile’(source前有个空格)使之生效,运行java看看配置是否成功。

四、配置Hadoop

Hadoop可以去http://hadoop.apache.org/releases.html下载,我下的是2.7.1的binary版本

直接解压到用户hadoop的家目录(/home/hadoop/)里就好了,之后进hadoop-2.7.1/etc/hadoop中配置一下Hadoop:

需要配置的文件有六个:hadoop-env.sh 、core-site.xml、hdfs-site.xml、mapred-site.xml、masters、slaves,其中mapred-site.xml是复制mapred-site.xml.template得来的。

1、配置hadoop-env.sh

在最后加上下面这行就行了,我感觉是不是和上面的JAVA_HOME重复了?

export JAVA_HOME=${JAVA_HOME}
2、配置core-site.xml

在configuration标签内加入下面的内容

<configuration>
    <!--master host ip:port 9000-->
    <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>
        <final>true</final>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/hadoop-2.7.1/tmp</value>
        <description>A bas for other temporary directories</description>
    </property>
    <property>
        <name>hadoop.native.lib</name>
        <value>true</value>
        <description>Should native hadoop libraries, if present, be used.</description>
    </property>
</configuration>
3、配置hdfs-site.xml

<configuration>
    <!--Namenode store space name, log dir-->
    <property>
        <name>dfs.name.dir</name>
        <value>/home/hadoop/hadoop-2.7.1/hdfs/name</value>
    </property>
    <!--Datanode dir-->
    <property>
        <name>dfs.data.dir</name>
        <value>/home/hadoop/hadoop-2.7.1/hdfs/data</value>
    </property>
    <!--data back count-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>
4、配置mapred-site.xml

在configuration标签内加入下面的内容

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>Execution framework set to Hadoop YARN.</description>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>512</value>
</property>
<property>
<name>mapreduce.map.cpu.vcores</name>
<value>1</value>
<description></description>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>512</value>
<description>Larger resource limit for reduces.</description>
</property>
<property>
<name>mapreduce.reduce.shuffle.parallelcopies</name>
<value>5</value>
<description>Higher number of parallel copies run by reduces to fetch outputs from very large number of maps.</description>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
<description>MapReduce JobHistory Server host:port, default port is 10020.</description>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
<description>MapReduce JobHistory Server Web UI host:port, default port is 19888.</description>
</property>
</configuration>

5、配置yarn-site.xml

<configuration>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
<description>host is the hostname of the resource manager and
port is the port on which the NodeManagers contact the Resource Manager.
</description>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
<description>host is the hostname of the resourcemanager and port is</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>shuffle service that needs to be set for Map Reduce to run</description>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>256</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>6144</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-vcores</name>
<value>1</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>3</value>
</property>
</configuration>

6、配置masters

这个文件以前没有,新建一个写上一行master(你的主节点主机名)就好了,我不知道这个是不是必须的,因为原来没有这文件。

7、配置slaves

里面加入数据节点的主机名:

slave1

slave2

五、配置hosts

改一下/etc/hosts,因为三台主机的hosts文件都是一样的嘛,我改成这样了,地下还有ipv6的东西没有动,就是把127.0.1.1注释了,感觉他很烦人。

127.0.0.1 localhost

#127.0.1.1 master

# Hadoop

192.168.226.160 master

192.168.226.161 slave1

192.168.226.162 slave2

六、关机,复制两个虚拟机

用VMware自动生成一下每个虚拟机的mac地址,进入复制出来的两个虚拟机,更改主机名为slave1、slave2,ip改成静态的,如上表进行配置,如果你的主机还没改,也要改成上表的主机名和IP。

七、配置ssh免密码登录

以下的操作要在三台机器上分别执行,可能前三个之前复制过来也可以,但是觉得都一样好像不大好,就单独弄了。

首先确保是以hadoop的身份运行的,确认后运行以下代码:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa  

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

再把authorized_keys的权限设置为600:

chmod 600 authorized_keys

可以ssh 本地ip/主机名 测试可否自己免密连自己:

下面的操作在master上运行:

ssh-copy-id -i ~/.ssh/id_dsa.pub hadoop@slave1

ssh-copy-id -i ~/.ssh/id_dsa.pub hadoop@slave2

这样就能实现master免密登录slave了,在slave1和slave2上也运行以上命令(把slave1/2改成其他两个节点),实现所有节点之间的免密登录。

八、从master复制hadoop到slave

进入master的hadoo家目录,输入一下命令就可以把hadoop文件夹放到slave的家目录了,太方便了

scp -r hadoop-2.7.1 slave1:~

scp -r hadoop-2.7.1 slave2:~

九、配置hadoop用户环境变量

在master家目录的.bashrc中加入以下行:

export HADOOP_INSTALL=/home/hadoop/hadoop-2.7.1

export PATH=$PATH:$HADOOP_INSTALL/bin

export HADOOP_COMMON_LIB_NATIVE_DIR="/home/hadoop/hadoop-2.7.1/lib/native"

export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/home/hadoop/hadoop-2.7.1/lib"

export HADOOP_PREFIX=/home/hadoop/hadoop-2.7.1

然后把.bashrc放到slave中去:

scp -r .bashrc slave1:~

scp -r .bashrc slave2:~

 source .bashrc一下,再输入hadoop测试一下路径是否可用

这样就可以了

hadoop集群的简单配置这样就完成,下篇文章测试一下功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: