CentOS6.7 下搭建Hadoop2.7.1 单机伪分布式环境
开始搭建前配置环境
- 配置IP地址
cd /etc/sysconfig/network-scripts/vi ifcfg-eno16777736(网卡名视情况而定)NETWORKING = yes1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21TYPE="Ethernet"
BOOTPROTO=static
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777736"
UUID="dfdf7864-58bb-403c-a422-6f721fb8c391"
DEVICE="eno16777736"
ONBOOT="yes"
IPADDR="192.168.30.50"
PREFIX="24"
GATEWAY="192.168.30.1"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_PRIVACY="no"
````
2. 配置网关
`vim /etc/sysconfig/network`
HOSTNAME = Hadoop.Master
GATEWAY = 192.168.30.1export JAVA_HOME=/usr/java/jdk1.8.0_1621
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73`systemctl restart network`
3. 设置hosts文件
`vi /etc/hosts`
在文件添入以下内容:
`192.168.30.50 Hadoop.Master`
4. 配置yum源,安装自动补全等
`mkdir /opt/repo`
`mv /etc/yum.repos.d/* /opt/repo/`
`vi /etc/yum.repos.d/local.repo`
`mkdir /mnt/centos`
将镜像文件传入根目录中进行挂载
`mount /CentOS-7-x86_64-DVD-1511.iso /mnt/centos/`
安装vim和自动补全,然后重新登录以生效
`yum install vim bash-completion -y`
## 添加Hadoop用户 ##
1. 添加用户组
`groupadd hadoop`
2. 添加用户并分配到用户组
`useradd -g hadoop hadoop`
3. 修改hadoop用户密码
`passwd hadoop`
## 关闭防火墙 ##
1. 关闭防火墙
`systemctl stop firewalld.service`
2. 关闭防火墙自启动
`chkconfig firewalld off`
3. 关闭Selinux
`vim /etc/sysconfig/selinux`
(修改如下内容)
`SELINUX=disabled`
4. 使SElinux立即生效,参数0是宽容模式(Prmissive),参数1是强制模式(Enforcing)
`setenforce 0`
查看Selinux状态,
`getenforce`
## SSH无密码配置 ##
1. 查看ssh与rsync安装状态(没有显示结果则表示没有安装,需执行步骤2安装)
`rpm -qa|grep openssh`
`rpm -qa|grep rsync`
2. 安装ssh与rsync
`yum -y install ssh`
`yum -y install rsync`
3. 切换hadoop用户
`su hadoop`
4. 生成SSH密码对
`ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa`
5. 将id_dsa.pub追加到授权的key中
`cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys`
6. 设置授权key权限
`chmod 600 ~/.ssh/authorized_keys`
7. 测试ssh连接
`ssh localhost`
## 安装JAVA ##
1. 安装
首先检查当前系统是否有jdk
`rpm -qa|grep java`
如果有,则需要卸载(卸载以java开头,后跟数字版本号的)
`rpm -e –nodeps [包名]`
> eg: rpm -e --nodeps java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64
2. 安装java
[点我下载JDK](http://www.baidu.com)
`rpm –ivh jdk-8u162-linux-x64.rpm`
3. 配置(在配置文件最下方添加配置)
`vi /etc/profile`
(在配置文件最下方添加配置,注意第一行最后边的jdk版本号要和自己的版本号相同)
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/binexport HADOOP_HOME=/usr/hadoop1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
243. 使配置文件生效
`source /etc/profile`
4. 测试环境变量设置,如最后一句执行完成后有显示版本号则安装完成
`java`
`javac`
`java -version`
参考链接:https://www.linuxidc.com/Linux/2018-03/151326.htm
## Hadoop安装与配置 ##
1. 将压缩包上传至/home/hadoop目录
[点我下载Hadoop](http://www.baidu.com)
`mv hadoop-2.7.1.tar.gz /home/hadoop`
2. 将压缩包解压至/usr目录
`tar zxvf /home/hadoop/hadoop-2.7.1.tar.gz -C /usr/`
3. 修改文件夹名称
`mv /usr/hadoop-2.7.1/ /usr/hadoop`
4. 创建hadoop数据目录
`mkdir /usr/hadoop/tmp`
5. 将hadoop文件夹授权给hadoop用户
`chown -R hadoop:hadoop /usr/hadoop/`
6. 设置环境变量
`vi /etc/profile`
(追加如下内容)
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS=”-Djava.library.path=$HADOOP_HOME/lib”1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
187. 使环境变量生效
`source /etc/profile`
8. 测试环境变量设置
`hadoop version`
(最先错误测试失败,可能是版本跟不上的原因,要保证Hadoop和JDK版本正确)
## 配置HDFS ##
1. 切换至Hadoop用户
`su – hadoop`
2. 修改hadoop-env.sh
`cd /usr/hadoop/etc/hadoop/`
`vi hadoop-env.sh`
(修改如下内容)
`export JAVA_HOME=/usr/java/jdk1.8.0_162`
3. 修改core-site.xml
`vi core-site.xml`
(添加如下内容)fs.defaultFS hdfs://Hadoop.Master:9000 hadoop.tmp.dir /usr/hadoop/tmp/ A base for other temporary directories. 1
2
34. 修改hdfs-site.xml
`vi hdfs-site.xml`
(添加如下内容)dfs.replication 1 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
595. 格式化hdfs(状态为1表示格式化失败,失败可能的原因:环境配置和xml修改错误)
`hdfs namenode –format`
注:出现Exiting with status 0即为成功
6. 启动hdfs
`start-dfs.sh`
(停止命令)`stop-dfs.sh`
> 注:输出如下内容,则启动成功
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [Hadoop.Master]
Hadoop.Master: starting namenode, logging to /usr/hadoop/logs/hadoop-hadoop-namenode-Hadoop.Master.out
Hadoop.Master: starting datanode, logging to /usr/hadoop/logs/hadoop-hadoop-datanode-Hadoop.Master.out
Starting secondary namenodes [0.0.0.0]
The authenticity of host '0.0.0.0 (0.0.0.0)' can't be established.
RSA key fingerprint is .
Are you sure you want to continue connecting (yes/no)? yes
0.0.0.0: Warning: Permanently added '0.0.0.0' (RSA) to the list of known hosts.
0.0.0.0: starting secondarynamenode, logging to /usr/hadoop/logs/hadoop-hadoop-secondarynamenode-Hadoop.Master.out
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicab
7. 查看进程
`jps`
> 注:输出类似如下内容
1763 NameNode
1881 DataNode
2146 Jps
2040 SecondaryNameNode
8. 使用web查看Hadoop运行状态
http://你的服务器ip地址:50070/

9. 在HDFS上运行WordCount
创建HDFS用户目录:
`hdfs dfs -mkdir /user`
根据自己的情况调整/user/(username):
`hdfs dfs -mkdir /user/hadoop`
复制输入文件(要处理的文件)到HDFS上:
`hdfs dfs -put /usr/hadoop/etc/hadoop /input`
查看我们复制到HDFS上的文件:
`hdfs dfs -ls /input`
运行单词检索(grep)程序(注意自己安装的Hadoop包名):
`hadoop jar /usr/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep /input /output 'dfs[a-z.]+'`
> (WordCount
`hadoop jar /usr/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /input /output`
说明:output文件夹如已经存在则需要删除或指定其他文件夹。)
错误1:input和output指定错误;解决办法:在前边加上根目录/

错误2:/output文件已经存在;解决办法:须删去HDFS下的/output然后再执行

查看运行结果:
`hdfs dfs -cat /output/*`
使用web方式登录验证,点击Utilities下边选择Browse the file system ,在下边找到name为output的文件,点开后如有下图所示文件,则表示成功

### 配置YARN
修改mapred-site.xml:
`cd /usr/hadoop/etc/hadoop/`
`cp mapred-site.xml.template mapred-site.xml`
`vi mapred-site.xml`
(添加如下内容)mapreduce.framework.name yarn 1
2
3修改yarn-site.xml:
`vi yarn-site.xml`
(添加如下内容) ``` 启动YARN: `start-yarn.sh` (停止yarn stop-yarn.sh) 查看当前java进程: `jps` > (输出如下) 4918 ResourceManager 1663 NameNode 1950 SecondaryNameNode 5010 NodeManager 5218 Jps 1759 DataNodeyarn.nodemanager.aux-services mapreduce_shuffle
运行mapReduce程序:
配置好如上配置再运行mapReduce程序时即是yarn中运行
使用web查看Yarn运行状态:
http://服务器ip地址:8088/
HDFS常用命令
- 创建HDFS文件夹
在根目录创建input文件夹:hdfs dfs -mkdir -p /input
在用户目录创建input文件夹:
说明:如果不指定“/目录”,则默认在用户目录创建文件夹hdfs dfs -mkdir -p input
(等同于hdfs dfs -mkdir -p /user/hadoop/input) - 查看HDFS文件夹
查看HDFS根文件夹:hdfs dfs -ls /
查看HDFS用户目录文件夹:hdfs dfs -ls
查看HDFS用户目录文件夹下input文件夹:hdfs dfs -ls input
(等同与hdfs dfs -ls /user/hadoop/input) - 复制文件到HDFS
hdfs dfs -put /usr/hadoop/etc/hadoop input - 删除文件夹
hdfs dfs -rm -r input

