Hadoop是用作处理大数据用的,核心是HDFS、Map/Reduce。虽然目前工作中不需要使用这个,但是,技多不压身,经过虚拟机很多遍的尝试,终于将Hadoop2.5.2的环境顺利搭建起来了。
首先准备一个CentOS,将主机名改为master,并且在/etc/hosts里面加入master对应的本机ip地址。
Linux基本配置
1
2
3
4
5
|
vi
/etc/sysconfig/network
#编辑文件里面的HOSTNAME=master
vi
/etc/hosts
#添加
本机IP地址 master
|
然后关闭iptables并设置开机不启动。
1
2
|
service iptables stop
chkconfig iptables off
|
重启系统,接下来是配置ssh无密码登陆。配置这个的理由是在启动hadoop可以不用输入密码。
SSH无密码登陆
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
vi
/etc/ssh/sshd_config
#以下4行的注释需要打开
HostKey
/etc/ssh/ssh_host_rsa_key
RSAAuthentication
yes
PubkeyAuthentication
yes
AuthorizedKeysFile .
ssh
/authorized_keys
#保存,并重启sshd
service sshd restart
#生成免登陆秘钥
ssh
-keygen -t rsa
#一路回车就行。之后会在当前登陆用户主目录中的.ssh文件夹里生成2个文件。
#进入.ssh目录。
cat
id_rsa.pub >> authorized_keys
#现在可以用ssh无密码登陆系统了。
ssh
localhost
|
JDK安装配置(略)
使用的版本是jdk-7u79-linux-x64。
安装并配置Hadoop2.5.2
将下载好的tar.gz包上传至环境。
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
tar
-zxvf hadoop-2.5.2.
tar
.gz -C
/usr
vi
/etc/profile
#将以下内容放在最后面。
export
JAVA_HOME=
/usr/java/jdk1
.7.0_79
export
CLASSPATH=.:$JAVA_HOME
/lib/dt
.jar:$JAVA_HOME
/lib/tools
.jar
export
HADOOP_HOME=
/usr/hadoop-2
.5.2
export
PATH=$PATH:$JAVA_HOME
/bin
:$HADOOP_HOME
/bin
:$HADOOP_HOME
/sbin
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
HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME
/lib/native
export
HADOOP_OPTS=-Djava.library.path=$HADOOP_HOME
/lib
#保存,并执行source /etc/profile
#配置Hadoop
#创建hadoop的name与data目录
mkdir
-p
/usr/hdfs/name
mkdir
-p
/usr/hdfs/data
mkdir
-p
/usr/hdfs/tmp
cd
/usr/hadoop-2
.5.2
/etc/hadoop
设置以下文件的JAVA_HOME
hadoop-
env
.sh hadoop-yarn.sh
vi
core-site.xml
#在configuration节点里面加入以下配置,注意ip改为本机ip
<property>
<name>hadoop.tmp.
dir
<
/name
>
<value>
/usr/hdfs/tmp
<
/value
>
<description>A base
for
other temporary directories.<
/description
>
<
/property
>
<!--
file
system properties-->
<property>
<name>fs.defaultFS<
/name
>
<value>hdfs:
//192
.168.1.112:9000<
/value
>
<
/property
>
vi
hdfs-site.xml
#同样在configuration节点里面加入以下配置
<property>
<name>dfs.namenode.name.
dir
<
/name
>
<value>
/usr/hdfs/name
<
/value
>
<
/property
>
<property>
<name>dfs.datanode.data.
dir
<
/name
>
<value>
/usr/hdfs/data
<
/value
>
<
/property
>
<property>
<name>dfs.replication<
/name
>
<value>1<
/value
>
<
/property
>
<property>
<name>dfs.permissions<
/name
>
<value>
false
<
/value
>
<
/property
>
#从模板复制一份mapred-site.xml
cp
mapred-site.xml.template mapred-site.xml
vi
mapred-site.xml
#同样在configuration节点里面加入以下配置
<property>
<name>mapreduce.framework.name<
/name
>
<value>yarn<
/value
>
<
/property
>
vi
yarn-site.xml
#同样在configuration节点里面加入以下配置,注意将ip地址换成本机的。
<property>
<name>yarn.nodemanager.aux-services<
/name
>
<value>mapreduce_shuffle<
/value
>
<
/property
>
<property>
<description>The address of the applications manager interface
in
the RM.<
/description
>
<name>yarn.resourcemanager.address<
/name
>
<value>192.168.1.112:18040<
/value
>
<
/property
>
<property>
<description>The address of the scheduler interface.<
/description
>
<name>yarn.resourcemanager.scheduler.address<
/name
>
<value>192.168.1.112:18030<
/value
>
<
/property
>
<property>
<description>The address of the RM web application.<
/description
>
<name>yarn.resourcemanager.webapp.address<
/name
>
<value>192.168.1.112:18088<
/value
>
<
/property
>
<property>
<description>The address of the resource tracker interface.<
/description
>
<name>yarn.resourcemanager.resource-tracker.address<
/name
>
<value>192.168.1.112:8025<
/value
>
<
/property
>
|
至此,已经将Hadoop初步的环境配置好了,在启动之前还需要格式化namenode。
输入命令“hadoop namenode -format”;
启动命令:
start-dfs.sh
start-yarn.sh
停止命令:
stop-dfs.sh
stop-yarn.sh
启动完毕,打开浏览器输入 http://192.168.1.112:50070 与 http://192.168.1.112:18088 验证安装。
测试Hadoop
通过运行hadoop自带的wordcount来验证安装是否正确。
进入hadoop安装的目录,输入以下命令。
1
2
|
mkdir
example
cd
example
|
编辑file1.txt与file2.txt
1
|
vi
file1.txt
|
hello zhm
hello hadoop
hello cz
1
|
vi
file2.txt
|
hadoop is ok
hadoop is newbee
hadoop 2.5.2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
cd
..
hadoop fs -
mkdir
/data
hadoop fs -put -f example
/file1
.txt example
/file2
.txt
/data
#运行wordcount例子
hadoop jar .
/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2
.5.2-sources.jar org.apache.hadoop.examples.WordCount
/data
/output
#查看运行结果
hadoop fs -
cat
/output/part-r-00000
#结果如下:
2.5.2 1
cz 1
hadoop 4
hello 3
is 2
newbee 1
ok 1
zhm 1
|
到这里,环境就已经配置好了,下面就是搞使用Maven开发Hadoop项目了。
HDFS常用命令
创建HDFS文件夹
在根目录创建input文件夹
1
|
hdfs dfs -mkdir -p /input
|
在用户目录创建input文件夹
说明:如果不指定“/目录”,则默认在用户目录创建文件夹
1
2
|
hdfs dfs -mkdir -p input
#等同于 hdfs dfs -mkdir -p /user/hadoop/input
|
查看HDFS文件夹
查看HDFS根文件夹
1
|
hdfs dfs -ls /
|
查看HDFS用户目录文件夹
1
|
hdfs dfs -ls
|
查看HDFS用户目录文件夹下input文件夹
1
2
|
hdfs dfs -ls input
#等同与 hdfs dfs -ls /user/hadoop/input
|
复制文件到HDFS
1
|
hdfs dfs -put /usr/hadoop/etc/hadoop input
|
删除文件夹
1
|
hdfs dfs -rm -r input
|
10参考资料
单机伪分布式搭建教程:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html
集群环境搭建教程:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html