10477777 发表于 2017-12-16 21:20:59

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
  
#mvjdk1.8.0_111 /usr/java
  

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

#vim /etc/profile  
//在尾部追加
  
export JAVA_HOME=/usr/java

  
export>  
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>  
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>
  
</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>
  <property>
  <name>dfs.namenode.checkpoint.dir</name>
  <value>/home/hadoop/hadoop/dfs/namesecondary/checkpoint</value>
  </property>
  <property>
  <name>dfs.namenode.checkpoint.edits.dir</name>
  <value>/home/hadoop/hadoop/dfs/namesecondary/edits</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>
  
</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>
  
</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
  

  (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 /data/wordcount  
$hadoop fs -mkdir /output/
  

  (3)上传文件
  

$ hadoop fs -put wordcount.txt/data/wordcount/  

  (4)执行wordcount程序
  

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

  (5)查看结果
  

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

页: [1]
查看完整版本: Hadoop 2.5.2 环境搭建