数据仓库DW我爱编程

hadoop 基础安装配置

2016-11-20  本文已影响167人  monotseng

1. 目的说明

本文档提供apache hadoop的基础安装手册,适用于快速入门练习使用;生产环境配置,在关键步骤和重要参数设置需要小心对待。

2. 参考文档

《hadoop权威指南-第3版》
hadoop Reference Document

3. 系统准备

准备3台centos6.5服务器,机器配置保证2g内存,连通外网。

server info:
hostname            ip
master          192.168.0.180
slave1          192.168.0.181
slave2          192.168.0.182

准备oracle JDK

http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

准备apache hadoop

http://hadoop.apache.org/releases.html
#选择已经编译好的binary

4. 基础环境配置

基础环境搭建,主要是用户创建、JDK环境和ssh无密码登陆;在虚拟机环境中,通常先在一个虚拟机上配置好JDK和ssh无密码登陆,只需要clone或者直接copy2份虚拟机,然后更改ip和主机名。本次实验是按完整的3台完整虚拟机操作,安装时选择basic server。

4.1 网络环境配置

先在master机器上操作,slave1和slave2重复同样的操作:

主机名配置

vi /etc/sysconfig/network
#修改hostname
hostname=master

hosts配置

vi /etc/hosts
#添加以下内容
192.168.0.180   master
192.168.0.181   slave1
192.168.0.182   slave2

网卡文件配置

vi /etc/sysconfig/network-scripts/ifcfg-etho
#修改以下内容
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.181
GATEWAY=192.168.0.1
NETMASK=255.255.255.0

#重启网络服务
service network restart

DNS配置

vi /etc/resolv.conf
#添加以下内容
nameserver  114.114.114.114

关闭防火墙

service iptables stop
chkconfig iptables off

关闭selinux

vi /etc/selinux/config
#修改SELINUX
SELINUX=disabled

4.2 JDK安装配置

#检查是否安装JDK:
rpm -qa | grep java

#卸载JDK
rpm -e java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
rpm -e java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

#安装oracle JDK
scp jdk-8u111-linux-x64.tar.gz root@master:~/

mkdir -p /usr/java
tar -zxvf jdk-8u111-linux-x64.tar.gz -C /usr/java

#修改环境变量
vi /etc/profile

#末行添加以下内容
export JAVA_HOME=/usr/java/jdk1.8.0_111
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#环境变量生效
source /etc/profile

#验证环境变量
java -version
javac -version

4.3 用户和目录创建

#创建用户组和用户
groupadd hadoop
useradd -g hadoop -s /bin/bash -d /home/hadoop -m hadoop
passwd hadoop

#创建hadoop介质目录
mkdir -p /opt/hadoop/

#创建hadoop存储目录
mkdir -p /hadoop/hdfs/name
mkdir -p /hadoop/hdfs/data
mkdir -p /hadoop/tmp

#目录权限
chown hadoop.hadoop -R /hadoop
chown hadoop.hadoop -R /opt/hadoop

4.4 ssh无密码登陆

master和slave操作。

#生成公钥私钥
su - hadoop
ssh-keygen -t rsa -P ''
chmod 700 ~/.ssh

master操作

#复制公钥到slave机器
ssh-copy-id hadoop@slave1
ssh-copy-id hadoop@slave2

#测试是否可以登陆
ssh slave1
ssh slave2

5. hadoop安装配置

5.1 hadoop介质配置

上传hadoop介质

scp hadoop-2.7.3.tar.gz root@master:~/

配置hadoop介质和环境变量

su - hadoop

#解压介质
tar -zxvf hadoop-2.7.3.tar.gz -C /opt/hadoop/

#编辑环境变量,slave最好也配置一下hadoop环境变量。
vi ~/.bash_profile
#添加以下内容
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.3/

#PATH增加hadoop的bin目录
PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin

#使之生效
source ~/.bash_profile

5.2 配置core-site.xml

vi core-site.xml
#修改以下内容
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/hadoop/tmp</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131702</value>
    </property>
</configuration>

5.3 配置hdfs-site.xml

vi hdfs-site.xml
#添加以下内容
<configuration>
   <property>
       <name>dfs.namenode.name.dir</name>
       <value>file:/hadoop/hdfs/name</value>
   </property>
   <property>
       <name>dfs.datanode.data.dir</name>
       <value>file:/hadoop/hdfs/data</value>
   </property>
   <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.webhdfs.enabled</name>
   <value>true</value>
   </property>
</configuration>

5.4 配置mapred-site.xml

#默认没有mapred-site.xml,需要copy一份模版
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
vi etc/hadoop/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>

5.5 配置yarn-site.xml

vi yarn-site.xml
#添加以下内容
<configuration>
   <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
   </property>
   <property>
       <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
       <value>org.apache.hadoop.mapred.ShuffleHandler</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.nodemanager.resource.memory-mb</name>
       <value>1600</value>
   </property>
</configuration>
```

### 5.6 配置相关env.sh
配置hadoop-env.sh
```bash
cd $HADOOP_HOME
vi etc/hadoop/hadoop-env.sh
```

配置yarn-env.sh
```bash
cd $HADOOP_HOME
vi etc/hadoop/yarn-env.sh
#修改JAVE_HOME
#修改JAVA_HEAP_MAX=-Xmx3072m
```
5.7 配置slave文件
添加slave机器
```bash
vi etc/hadoop/slaves
#添加以下内容
slave1
slave2
```

### 5.8 同步hadoop介质
```bash
scp -r hadoop-2.7.3 slave1:/opt/hadoop
scp -r hadoop-2.7.3 slave2:/opt/hadoop
```
## 6. hadoop环境验证

### 6.1 hadoop进程管理
```bash
#启动hadoop进程
cd $HADOOP_HOME
sbin/start-dfs.sh
sbin/start-yarn.sh

#关闭hadoop进程
sbin/stop-dfs.sh
sbin/stop-yarn.sh
#start-all.sh和stop-all.sh虽然支持,但已经标明被废弃了。
```
### 6.2 hadoop运行状态检查
分别在3台虚拟机上验证进程
master状态:
```bash
#状态检查
hdfs dfsadmin -report

#进程检查
[hadoop@master hadoop-2.7.3]$ jps
31616 Jps
31355 ResourceManager
31071 SecondaryNameNode
```

slave状态:
```bash
[hadoop@slave1 ~]$ jps
30885 NodeManager
30987 Jps
30669 DataNode
```
登陆web管理平台
```
http://master:8088/cluster
```

![Paste_Image.png](https://img.haomeiwen.com/i68803/ea481d5c8dc91eec.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


```
http://master:50070
```

![Paste_Image.png](https://img.haomeiwen.com/i68803/d0a4caf99ea5b853.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

### 6.3 运行wordcount示例
```bash
#创建hadoop目录
hdfs dfs -mkdir /test

#上传运行的文本,随便写几个单词
hdfs dfs -put test.txt /test/
hdfs dfs -ls /test/

#运行wordcount
cd $HADOOP_HOME
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test/test.txt /test/out

#验证运行结果
[hadoop@master hadoop-2.7.3]$ hdfs dfs -ls /test/out
Found 2 items
-rw-r--r--   2 hadoop supergroup          0 2016-11-20 20:56 /test/out/_SUCCESS
-rw-r--r--   2 hadoop supergroup         41 2016-11-20 20:56 /test/out/part-r-00000

[hadoop@master hadoop-2.7.3]$ hdfs dfs -cat /test/out/part-r-00000
china   1
hadoop  1
hello   1
people  1
word    1
```

## 7. hadoop故障排查
### 7.1 启动前的检查
检查防火墙关闭
检查hosts正确配置
检查主机网络正确配置
检查selinux关闭
检查JDK安装正确
检查ssh无密码登陆正确
检查hadoop存储和介质目录权限正确
检查hadoop配置文件(重要的4个)是否正确

检查yarn-site.xml,此项参数设计hadoop性能调优,入门暂不考虑这个参数,保证大于1536即可,否则有可能会导致wordcount运行失败。
 ```xml
 <property>
       <name>yarn.nodemanager.resource.memory-mb</name>
       <value>1600</value>
   </property>
```
检查yarn-env.sh,此项参数涉及hadoop性能调优,入门暂不考虑这个参数。
```bash
JAVA_HEAP_MAX=-Xmx3072m
```

### 7.2 运行日志
运行日志在$HADOOP_HOME/logs中:
```bash
cd $HADOOP_HOME
[hadoop@master logs]$ ls
hadoop-hadoop-namenode-master.log             hadoop-hadoop-secondarynamenode-master.out.2
hadoop-hadoop-namenode-master.out             hadoop-hadoop-secondarynamenode-master.out.3
hadoop-hadoop-namenode-master.out.1           SecurityAuth-hadoop.audit
hadoop-hadoop-namenode-master.out.2           yarn-hadoop-resourcemanager-master.log
hadoop-hadoop-namenode-master.out.3           yarn-hadoop-resourcemanager-master.out
hadoop-hadoop-secondarynamenode-master.log    yarn-hadoop-resourcemanager-master.out.1
hadoop-hadoop-secondarynamenode-master.out    yarn-hadoop-resourcemanager-master.out.2
hadoop-hadoop-secondarynamenode-master.out.1  yarn-hadoop-resourcemanager-master.out.3

#查看日志信息,slave机器类似操作
vi hadoop-hadoop-namenode-master.log
```
上一篇下一篇

猜你喜欢

热点阅读