linux上部署hadoop集群系列 基础篇

介绍

这一系列博文介绍hadoop集群的部署和安装,因为hadoop确实比较复杂,所以分为几个部分来一一介绍。大致有基础篇,HA-QJM篇,Federation篇。


正文

一、操作环境

虚拟机4台,配置基于hadoop的集群中包括4个节点:1Master3Salve,节点之间局域网连接,可以相互ping通,Ip分布为:

168.5.15.112 hadoop1Master

168.5.15.116 hadoop2Slave

168.5.15.207 hadoop3Slave

168.5.15.201 hadoop4Slave


操作系统为CENTOS/RHEL5.4 64bit


Master机器主要配置NameNodeJobTracker的角色,负责总管分布式数据和分解任务的执行;3Salve机器配置DataNodeTaskTracker的角色,负责分布式数据存储以及任务的执行。


创建账户

使用root登陆所有机器后,所有的机器都创建hadoop 用户

useradd hadoop

passwd hadoop

此时在/home/ 下就会生成一个hadoop目录,目录路径为/home/hadoop


使用hadoop用户登录并创建相关的目录

定义安装包存放路径:/opt/

并给与足够的权限:chown 777 /opt

需要两个安装包:JDK和HADOOP安装包,两个都从apache官网上下载。

这里为jdk-8u25-linux-x64.rpm和hadoop-2.6.0.tar.gz,下载后放在/opt目录下,


安装JDK

1 rpm -ivh jdk-8u25-linux-x64.rpm,安装后JDK家目录默认在/usr/java/jdk1.8.0_25

2 配置环境变量,vi /etc/profile ,在行末尾添加

export JAVA_HOME=/usr/java/jdk1.8.0_25

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/lib/dt.jar

export PATH=$JAVA_HOME/bin:$PATH

使配置立即生效

source /etc/profile

执行java -version 查看是否安装成功


修改主机名

1 连接到主节点168.5.15.112 ,修改network 执行 vi /etc/sysconfig/network ,修改HOSTNAME=hadoop1

2 修改hosts 文件,vi /etc/hosts ,在行末尾添加:

168.5.15.112 hadoop1

168.5.15.116 hadoop2

168.5.15.207 hadoop3

168.5.15.201 hadoop4

3 执行hostname hadoop1

4 执行exit 后重新连接可看到主机名以修改OK

其他节点也修改主机名后添加Host, 或者host 文件可以在后面执行scp 覆盖操作


配置SSH无密码登陆

以hadoop用户在其中一台机器上执行命令ssh-keygen -t rsa 之后一路回车,

2在其他机器上创建目录:/home/hadoop/.ssh,并修改权限:chmod 700 /home/hadoop/.ssh

3 把~/.ssh/id_rsa.pub 分发到所有机器上(包括自己)

scp ~/.ssh/id_rsa.pub hadoop@{#IP}:~/.ssh/authorized_keys

4 修改权限:执行 chmod 600 ~/.ssh/authorized_keys

5 若有必要请修改ssh配置文件

6 验证

ssh {#IP}

如果没有需要密码即可

7 注意:要确保任意两台机器都能够通过SSH无密码登陆对方


Hadoop安装

下载官网地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/

解压目录

tar zxvf hadoop-2.2.0.tar.gz

创建相应的数据存放目录:

mkdir -p /opt/hadoop-2.6.0/hdfs/name

mkdir -p /opt/hadoop-2.6.0/hdfs/data

mkdir -p /opt/hadoop-2.6.0/logs

mkdir -p /opt/hadoop-2.6.0/tmp


配置环境变量

vi /etc/profile

添加

export HADOOP_HOME=/opt/hadoop-2.6.0

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

export HADOOP_MAPARED_HOME=${HADOOP_HOME}

export HADOOP_COMMON_HOME=${HADOOP_HOME}

export HADOOP_HDFS_HOME=${HADOOP_HOME}

export YARN_HOME=${HADOOP_HOME}

export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop

export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop


生效配置:

source /etc/profile


进入/etc/hadoop目录中

cd/home/hadoop/hadoop/etc/hadoop


配置hadoop-env.sh

vi hadoop-env.sh


在末尾添加

export JAVA_HOME=/usr/java/jdk1.8.0_25


slave配置

vi slaves

添加slave IP

168.5.15.116

168.5.15.201

168.5.15.207


编辑core-site.xml

vi core-site.xml

configuration 节点里面添加属性

    <property>

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

        <value>/opt/hadoop-2.6.0/tmp</value>

    </property>

    <property>

        <name>fs.default.name</name>

        <value>hdfs://10.9.214.151:9000</value>

    </property>

    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>10.9.214.151</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>


配置hdfs-site.xml

vi hdfs-site.xml

     <property>
             <name>dfs.namenode.name.dir</name>
                     <value>file:/opt/hadoop-2.6.0/hdfs/name</value>
                         </property>

    <property>
            <name>dfs.dataname.data.dir</name>
                    <value>file:/opt/hadoop-2.6.0/hdfs/data</value>
                        </property>

    <property>
            <name>dfs.replication</name>
                    <value>3</value>
                        </property>
    <property>


配置yarn-site.xml

<property>
<name>yarn.resourcemanager.address</name>
<value>10.9.214.151:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>10.9.214.151:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>10.9.214.151:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>10.9.214.151:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>10.9.214.151:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>


配置mapred-site.xml

     <property>
             <name>mapred.job.tracker</name>
                     <value>http://10.9.214.151:9001</value>
                         </property>


在一台机器上配置好后,把以下文件同步到其他机器:

/etc/profile,/etc/hosts,hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml


Hadoop启动

1 格式化集群,以下用hadoop用户执行

hadoop namenode -format


2 启动hdfs

执行

start-dfs.sh

开启hadoop dfs服务    


3 启动Yarn

开启yarn 资源管理服务

start-yarn.sh


4 验证hdfs

在namenode上执行jps看进程是否都已经启动了

[root@hadoop1 hadoop]# jps

27113 ResourceManager

26387 SecondaryNameNode

26075 NameNode

27633 Jps


在datanode上查看

[root@hadoop2 ~]# jps

8966 Jps

31822 DataNode

31935 NodeManager


验证是否可以登陆

hadoop fs -ls hdfs://168.5.15.112:9000/

hadoop fs -mkdir hdfs://168.5.15.112:9000/testfolder

hadoop fs -copyFromLocal /testfolder hdfs://168.5.15.112:9000/testfolder(前提为本机已创建/testfolder目录)

hadoop fs -ls hdfs://168.5.15.112:9000/testfolder


验证map/reduce

master1 上,创建输入目录 :

hadoop fs -mkdir hdfs://168.5.15.112:9000/input


将一些txt文件复制到hdfs 分布式文件系统的目录里,执行以下命令

hadoop fs -put /test/*.txt hdfs://168.5.15.112:9000/input


hadoop1 上,执行 HADOOP自带的例子,wordcount包,命令如下

cd $HADOOP_HOME/share/hadoop/mapreduce


hadoop jar hadoop-mapreduce-examples-2.2.0.jar wordcount hdfs://168.5.15.112:9000/input hdfs://168.5.15.112:9000/output


hadoop1上,查看结果命令如下:

[root@master1 hadoop]# hadoop fs -ls hdfs://168.5.15.112:9000/output

Found 2 items

-rw-r--r--   2 root supergroup          0 2012-06-29 22:59 hdfs://168.5.15.112:9000/output/_SUCCESS

-rw-r--r--   2 root supergroup       16605 2012-06-29 22:59 hdfs://168.5.15.112:9000/output/part-r-00000

[root@hadoop1 hadoop]# hadoop fs -cat  hdfs://168.5.15.112:9000/output/part-r-00000即可看到每个单词的数量


本文出自 “Linux和网络” 博客,转载请与作者联系!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。