hadoop 基础安装配置

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](http://upload-images.jianshu.io/upload_images/68803-ea481d5c8dc91eec.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


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

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/68803-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
```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容