Hadoop 2.5.2 环境搭建

Hadoop 生态环境主要有hadoop 、zookeeper、hbase、hive 等构成
1.搭建Java环境
2.搭建hadoop环境,搭建成功后运行/sbin/start-all.sh即可启动所有hadoop相关服务,启动成功后有相应的进程,通过jps命令查看
3.如果需要可以进一步搭建zookeeper、hbase、hive等。其中hive搭建之前需要先安装mysql数据库。所有服务搭建成功后均有相应的进程,用jps查看。

1.Hadoop 平台环境

操作系统:CentOS-6.5-x86_64
JAVA版本:jdk-8u111-linux-x64
Hadoop版本:hadoop-2.5.2

2.安装操作操作系统

2.1 准备安装镜像

CentOS-6.5-x86_64-bin-DVD1

2.2安装教程

[安装教程](http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503770.html)
或者见自己安装截图

2.3 建立一般用户

//新增用户
#useradd hadoop
//设置密码
#passwd hadoop 

2.4 关闭防火墙SELinux

关闭防火墙

//临时关闭
#service iptables stop
//永久关闭
#chkconfig iptables off
#service ip6tables stop
#chkconfig ip6tables off

关闭SELinux

#vim /etc/sysconfig/selinux
SELINUX=enforcing
|
SELINUX=disable

执行如下命令

#setenforce 0
#getenforce

3.hadoop安装

3.1 环境说明

hostname username IP
master hadoop 192.168.207.10
slave1 hadoop 192.168.207.11
slave2 hadoop 192.168.207.12

3.2网络配置

1.修改主机名

//查看当前主机名
#hostname
//修改当前主机名
#vim /etc/sysconfig/network
更改HOSTNAME选项

2.修改当前机器IP

#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE 接口名(设备,网卡)
BOOTPROTO IP的配置方法(static:固定IP, dhcpHCP, none:手动)
HWADDR MAC地址
ONBOOT 系统启动的时候网络接口是否有效(yes/no)
TYPE 网络类型(通常是Ethemet)
NETMASK 网络掩码
IPADDR IP地址
IPV6INIT IPV6是否有效(yes/no)
GATEWAY 默认网关IP地址

要记住配置完成时,要用以下代码重新启动网络服务。

#service network restart

3.配置hosts文件(域名解析)

#vim /etc/hosts       

3.3 SSH无密钥验证配置

1.SSH无密钥原理
Master(NameNode| JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Slave(DataNode|Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有Slave上。当master通过SSH连接Slave时,Slave就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。master收到加密数之后再用私钥解密,并将解密数回传给slave,slave确认解密数无误之后就允许Master进行连接了,这就是一个公钥认证的过程,期间不需要用户手工输入密码。重要过程是将客户端Master复制到slave上。
2.配置master免密钥登录slave(该过程用hadoop用户完成)
生成密钥(该过程需要在master和slave上分别执行)

//切换用户
$su hadoop
//生成密钥
$ ssh-keygen -t rsa

id_rsa.pub追加到授权key中(只需要将master节点的公钥追加到authorized_keys
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
在master上更改authorized_keys的权限
chmod 600 authorized_keys
authorized_keys复制到所有slave节点

$scp ~/.ssh/authorized_keys hadoop@slave1:~/.ssh/
$scp ~/.ssh/authorized_keys hadoop@slave2:~/.ssh/

测试,master免密钥登录所有slave节点

$ssh slave1
$ssh slave2

3.4 JAVA环境安装和配置

已共享文件夹的形式将JAVA软件压缩包共享到Master主机。
1.root身份进行安装,如果系统已经安装了其他版本的java请先卸载旧版,再进行安装。

//解压
#tar -zxvf jdk-8u111-linux-x64.tar.gz
//移动文件夹到/usr下并命名为java
#mv  jdk1.8.0_111 /usr/java

2.配置java环境变量【替换成自己的java安装路径和版本】,这一点需要特别的注意路径

#vim /etc/profile
//在尾部追加
export JAVA_HOME=/usr/java
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

3.使配置生效

$source /etc/profile

4.验证是否安装成功

$java -version

5.安装其他机器,使用scp命令将java文件夹和profile文件复制到其他机器

scp -r /usr/java hadoop@slave1:/usr/
scp -r /usr/java hadoop@slave2:/usr/
scp -r /etc/profile hadoop@slave1:/etc/profile
scp -r /etc/profile hadoop@slave2:/etc/profile

3.5 hadoop集群安装

所有的机器上都要安装hadoop,现在就先在master'服务器上安装,然后其他服务器利用scp复制文件实现。
1.同样利用共享文件夹方式,将压缩包分享到虚拟机,解压

#tar -zvxf hadoop-2.5.2tar.gz 
#mv hadoop-2.5.2 /home/hadoop/hadoop
#chown -R hadoop:hadoop /home/hadoop

2.配置环境变量(在尾部追加)

# vim  /etc/profile        # set hadoop environment
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export CLASSPATH=.:$JAVA_HOME/lib:$HADOOP_HOME/lib:$CLASSPATH
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

使环境变量立即生效,注意在哪个用户下执行该命令,环境变量在哪个用户下生效

#su hadoop
$source /etc/profile

3.配置hadoop文件
首先进入配置文件所在的文件夹:

#cd /home/hadoop/hadoop/etc/hadoop

(1)core-site.xml

#vim core-site.xml
<configuration>
    <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
    </property>
    <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/home/hadoop/hadoop/hadoop_tmp</value>
            <!--需要自己创建hadoop_tmp文件夹-->
    </property>
    <property>
            <name>io.file.buffer.size</name>
            <value>131072</value>
    </property>
    <property>
            <name>hbase.rootdir</name>
            <value>hdfs://master:9000/hbase</value>
    </property>
</configuration>

(2)hdfs-site.xml

#vim hdfs-site.xml
<configuration>
      <property>
              <name>dfs.replication</name>
              <value>2</value>
      </property>
      <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>master:9001</value>
      </property>
      <property>
              <name>dfs.namenode.name.dir</name>
              <value>file:/home/hadoop/hadoop/dfs/name</value>
              <description>namenode上存储hdfs元数据</description>
      </property>
      <property>
              <name>dfs.datanode.data.dir</name>
              <value>file:/home/hadoop/hadoop/dfs/data</value>
              <description>datanode上数据块物理存储位置</description>
      </property>
      <property>
              <name>dfs.webhdfs.enabled</name>
                <value>true</value>
      </property>
</configuration> 

(3)mapred-site.xml

#vim mapred-site.xml
<configuration>
      <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>
      <property>
            <name>mapreduce.jobtracker.http.address</name>
            <value>NameNode:50030</value>
      </property>
</configuration> 

(4) yarn-site.xml

#vim yarn-site.xml
<configuration>
      <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>
      <property>
              <name>yarn.resourcemanager.zk-address</name>
              <value>master:2181,slave1L2181,slave2:2181</value>
      </property>
      <property>
              <name>yarn.log-aggregation-enable</name>
              <value>true</value>
      </property>
</configuration>

(5)修改slaves文件,添加datanode结点的hostname到slaves文件中

slave1
slave2

(6)hadoop-env.sh

#vim /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=${JAVA_HOME}
|
export JAVA_HOME=/usr/java
export HADOOP_COMMON_LIB_NATIVE_DIR=/home/hadoop/hadoop/lib/native

(7)最后将整个/home/hadoop/hadoop文件夹及其子文件夹使用scp复制到slave的相同目录中

$ scp -r /home/hadoop/hadoop hadoop@slave1:/home/hadoop/
$ scp -r /home/hadoop/hadoop hadoop@slave2:/home/hadoop/

4.运行 hadoop
(1)格式化(*只能运行一次,如果想多次运行需要删除dfs文件夹中的data和name文件)

$hdfs namenode -format

(2)启动hadoop

$ start-dfs.sh
$ start-yarn.sh
 命令来代替
$ start-all.sh

(3)jps查看进程
master主节点进程:

slave从属节点进程:

(4)通过浏览器查看集群运行状态
概览:http://192.168.207.10:50070/
集群:http://192.168.207.10:8088/
JobHistory:http://192.168.207.10:19888
jobhistory是Hadoop自带的一个历史服务器,记录Mapreduce历史作业。默认情况下,jobhistory没有启动,可用以下命令启动:

$ sbin/mr-jobhistory-daemon.sh start historyserver

5.测试hadoop
(1)建立文件

$ vim wordcount.txt
hello you
hello me
hello everyone

(2)在HDFS上建立目录

$ hadoop fs -mkdir /input
$hadoop fs -mkdir /output

(3)上传文件

$ hadoop fs -put wordcount.txt  /input

(4)执行wordcount程序

$ hadoop jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-
2.5.2.jar wordcount /input /output/wordcount/

(5)查看结果

$ hadoop fs -text /output/wordcount/part-r-00000

posted @ 2017-06-01 14:33  笨笨鸟  阅读(354)  评论(4编辑  收藏  举报