天问

Hadoop集群搭建

第一次搭建Ubuntu

本环境在自己的dellpc上,通过visualbox虚拟出三个centos7虚拟机搭建而成。

注意:

Visualbox网络设置为 桥接方式

Centos7安装选择server no deskptop

磁盘大一点,每个设置至少50G左右。

安装主要分以下几个步骤:

账号:root/000000

1、创建用户组

groupadd hadoop 添加一个组

useradd hadoop -g hadoop 添加用户

groupadd lyq

useradd lyq

2jdk的安装

这里安装的版本是server-jre-7u21-linux-x64.gz,解压复制到/usr/java/

jdk安装好就要配置环境变量了,使用vi /etc/profile命令编辑添加如下内容:

JAVA_HOME=/usr/java/jdk1.7.0_21

PATH=$PATH:$JAVA_HOME/bin

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

export JAVA_HOME PATH CLASSPATH

配置好之后要用命令source /etc/profile使配置文件生效,这样jdk就安装完毕了。

安装完之后不要忘了将所有者设置为hadoop

使用命令chown -R hadoop:hadoop java/

3.hadoop的安装

hadoop的版本是hadoop-0.20.2.tar.gz,也把它解压到/opt目录(免编译安装的软件放在这个目录)下面,改名为hadoop

hadoop也要设置环境变量,使用vi /etc/profile命令编辑添加如下内容:

export HADOOP_HOME=/opt/hadoop

export PATH=$HADOOP_HOME/bin:$PATH

同样也要执行source /etc/profile使配置文件生效,然后执行命令使用命令chown -R hadoop:hadoop hadoop/将其所有者改为hadoop

4、修改地址解析文件/etc/hosts,加入

192.168.6.110 master

192.168.6.111 slave1

192.168.6.112 slave2

5、修改hadoop的配置文件

首先切换到hadoop用户,su hadoop

①修改hadoop目录下的conf/hadoop-env.sh文件

加入java的安装路径export JAVA_HOME=/opt/java/jdk

②把hadoop目录下的conf/core-site.xml文件修改成如下:

安装介绍:

http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/ClusterSetup.html#Operating_the_Hadoop_Cluster

Web Interfaces

Once the Hadoop cluster is up and running check the web-ui of the components as described below:

Daemon

Web Interface

Notes

NameNode

http://nn_host:port/

Default HTTP port is 50070.

ResourceManager

http://rm_host:port/

Default HTTP port is 8088.

MapReduce JobHistory Server

http://jhs_host:port/

Default HTTP port is 19888.

    
 

  • NameNode - http://localhost:50070/
  • JobTracker - http://localhost:50030/

       
     

    来自 <http://hadoop.apache.org/docs/r1.0.4/cn/quickstart.html>

       
     

       
     

    关闭防火墙:

       
     

       
     

    hadoop几种安装方式:

    单机:下载解压就可以使用,命令行使用

       
     

    伪分布:几个节点安装在同一个linux机器中。

       
     

    完全分布

       
     

    Master

    Slave1

    Slave2

    Slave3

    ….

       
     

    NameNode:

    保存metadata信息(fsimage),permissions权限,block保存在datanode位置记录

    Namenode是所有HDFS元数据的仲裁者和管理者,这样,用户数据永远不会流过Namenode。

       
     


       
     

       
     

       
     

    SecondNameNode:辅助名称节点

       
     

       
     

    DataNode

    数据节点,3s一次发送心跳,报告磁盘健康状态

       
     

    Jobtracker作业跟踪器

       
     

    tasktracker:任务节点,完全分布至少两个task加一个namenode,3台服务器。

       
     

    第二次搭建(Centos):

    Hadoop-2.6.0+Zookeeper-3.4.6+Spark-1.5.0+Hbase-1.1.2+Hive-1.2.0集群搭建

       
     

    磁盘太小,每个最大才配置8G,所以现在重新安装三台ubuntu-server。

       
     

    本环境在自己的dellpc上,通过visualbox虚拟出三个CentOS7虚拟机搭建而成。

    注意:

    Visualbox网络设置为 桥接方式

    主机子网掩码:255.255.255.0

    默认网关:192.168.6.1

       
     

    Centos7安装选择server no deskptop

    磁盘大一点,每个设置至少50G左右。

    安装主要分以下几个步骤:

       
     

       
     

    1、创建用户组

    root/000000

    hadoop/123456

    groupadd hadoop 添加一个组

    useradd hadoop -g hadoop 添加用户

       
     

    2、jdk的安装

    检查是否内置jdk:

    rpm -qa | grep java

    卸载内置jdk:

    rpm -qa | grep java | xargs rpm -e --nodeps

       
     

    这里安装的版本是server-jre-7u21-linux-x64.gz,解压复制到/usr/java/

    jdk安装好就要配置环境变量了,使用vi /etc/profile命令编辑添加如下内容:

       
     

    JAVA_HOME=/usr/java/jdk1.7.0_21

    PATH=$PATH:$JAVA_HOME/bin

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

    export JAVA_HOME PATH CLASSPATH

       
     

    配置好之后要用命令source /etc/profile使配置文件生效,这样jdk就安装完毕了。

    安装完之后不要忘了将所有者设置为hadoop。

       
     

    使用命令chown -R hadoop:hadoop java/

       
     

    3.hadoop的安装

    文档:

    http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/ClusterSetup.html

    下载:

    http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz

    下载后解压到:/opt/hadoop-2.7.1

       
     

    hadoop也要设置环境变量,使用vi /etc/profile命令编辑添加如下内容:

       
     

    export HADOOP_HOME=/opt/hadoop

    export PATH=$HADOOP_HOME/bin:$PATH

       
     


       
     

    同样也要执行source /etc/profile使配置文件生效,然后执行命令使用命令chown -R hadoop:hadoop hadoop/将其所有者改为hadoop

       
     

    4.1 设置主机名

     vi /etc/sysconfig/network

    master/slave1/slave2

       
     

       
     

    4.2设置主机静态ip

    vim /etc/sysconfig/network-scripts/ifcfg-enp0s3

       
     

    static

    192.168.6.160

       
     

    service network restart

       
     

    dns设置:

    vim /etc/resolve.conf

    nameserver 192.168.6.1

       
     

       
     

    4.3 修改地址解析文件/etc/hosts,加入

Master

192.168.6.160

Slave1

192.168.6.161

Slave2

192.168.6.162

   
 

192.168.6.160 master

192.168.6.161 slave1

192.168.6.162 slave2


   
 

   
 


   
 

4.4 关闭防火墙Iptables,关闭SElinux

service iptables status

chkconfig iptables off

   
 

CentOS7使用firewall防火墙替代了原来的,centos7开始使用systemctl来管理服务和程序,包括了servicechkconfig

查看防火墙状态:

firewall-cmd --state

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

   
 

   
 

   
 

getenforce

/etc/selinux/config 文件

SELINUX=enforcing改为SELINUX=disabled,执行该命令后重启机器生效

   
 

4.5 ssh配置,支持公钥连接

vi /etc/ssh/sshd_config

   
 

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

   
 

service sshd restart

   
 

   
 

5、修改hadoop的配置文件(conf/*-site.xml)

首先切换到hadoop用户,su hadoop

   
 


hadoop-env.sh export JAVA_HOME=/opt/java/jdk

   
 

yarn-env.sh export JAVA_HOME=/usr/java/jdk

   
 

conf/core-site.xml

   
 


   
 

<property>

<name>fs.defaultFS</name>

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

</property>

<property>

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

<value>file:/home/hadoop/tmp</value>

<description>A base for other temporary directories.</description>

</property>

<property>

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

<value>131702</value>

</property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

   
 

hdfs-site.xml


<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

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

<value>/home/hadoop/hdfs/name</value>

<description>namenode上存储hdfs名字空间元数据 </description>

</property>

<property>

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

<value>/home/hadoop/hdfs/data</value>

<description>datanode上数据块的物理存储位置</description>

</property>

<property>

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

<value>master:9001</value>

</property>

   
 

mapred-site.xml


   
 

<property>

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

<value>yarn</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>

   
 

yarn-site.xml

   
 


<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.hostname</name>

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

   
 

Slaves:


   
 

ssh-keygen -t rsa

   
 

格式化namenode

hadoop namenode -format

(第一次不执行,namenode不会启动)

g.启动hdfs集群

sh /opt/hadoop-1.1.1/sbin/start-all.sh

Instead use start-dfs.sh and start-yarn.sh

 
 

h.查看节点进程

Jps

   
 

Master(无tasktrack):

resourceManager


   
 

Slave:


   
 

http://rhel-june:50030/

   
 

NameNode info:

http://192.168.6.160:50070

   
 

secondNamenode:

http://192.168.6.160:9001/status.html

   
 

All Applications

http://192.168.6.160:8088/cluster

运行测试:

hadooop fs -mkdir /input

   
 

本地文件存放到hdsf:

bin/hadoop fs -put ec/hadoop/core-site.xml /input

(hadoop fs -copyFromLocal /home/hadoop/*.py /input/wordcount)

   
 

执行,指定jar主类,输入,输出hdfs目录:

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /input /output

hadoop jar /home/hadoop/wordcount.jar com.PACKT.chapter1.WordCount /input/wordcount/ /output

   
 

查看数据:

bin/hadoop fs -ls /output

bin/hadoop fs -cat /output/part-r-00000

   
 

   
 

由于配置了环境变量,所以直接执行:

hadoop fs -put ec/hadoop/core-site.xml /input

   
 

更简便:

unalias fs &> /dev/null

alias fs="hadoop fs"

unalias hls &> /dev/null

alias shls ="fs -ls"

   
 

   
 

eclipse配置:

Hadoop-eclipse-plugin-2.7.3.jar插件,maven管理


   
 

   
 

   
 

集群包含三个节点,节点之间可以免密码SSH访问,节点IP地址和主机名分布如下:

序号

IP地址

机器名

类型

核数/内存

用户名

目录

1

192.168.0.61

hadoop1

NN/DN/RM

Master/Worker

1/3G

hadoop

/opt程序所在路径

/opt/scala-...

/opt/hadoop

/opt/complied

2

192.168.0.62

hadoop2

DN/NM/Worker

1/2G

hadoop

   

3

192.168.0.63

hadoop3

DN/NM/Worker

1/2G

hadoop

   

   
 

1.所有节点均是CentOS7 64bit系统,防火墙/SElinux均禁用,所有节点上均创建了一个hadoop用户,用户主目录是/home/hadoop,上传文件存放在/home/hadoop/upload文件夹中。

2.所有节点上均创建了一个目录/app用于存放安装程序,并且拥有者是hadoop用户,对其必须有rwx权限(一般做法是root用户在根目录下创建/app目录,并使用chown命令修改该目录拥有者为hadoop),否则hadoop用户使用SSH往其他机器分发文件会出现权限不足的提示

博客地址:http://blog.yoqi.me/?p=3716
扫我捐助哦
喜欢 0

这篇文章还没有评论

发表评论