hadoop基本运行与源码编译
hadoop的基本使用与源码编译
Hadoop启动及其基本操作
前置需求
- JDK(官方要求不同版本使用不同的JDK,由于我们使用2.10.0版本hadoop,必须使用JDK7及以上,JDK太高又会有warning,使用JDK8是最好的选择)
- ssh及pdsh管理ssh资源
1 | rpm -qa|grep -E "openssh" |
- 下载Hadoop。官网链接,千万注意,下
hadoop-2.10.0-src.tar.gz
,别下成原码了!!
安装Hadoop及实现伪分布式配置
官网链接:详细配置及参考
将下载的Hadoop压缩包随意的解压在一个包内
这就是解压后的文件
进入etc目录下,配置
hadoop-env.sh
1
2
3The java implementation to use.
export JAVA_HOME=[配置到JAVA_HOME]
使用 echo $JAVA_HOME 查看JAVA_HOME路径配置
core-site.xml
及hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
--------------------------------
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
官网配置了这些就可以启动了,下面是百度到的其他配置,便于学习
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<!--core-site.xml-->
<configuration>
<!-- 指定HDFS的nameservice -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://zachary-pc:9000</value>
</property>
<!-- 缓冲区大小 -->
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!-- 指定临时文件目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/zachary/hadoop-2.10.0/tmp</value>
</property>
</configuration>
-------------------
<!--hdfs-site.xml-->
<configuration>
<!-- configuration for NameNode:-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/zachary/hadoop-2.10.0/name</value>
</property>
<!-- 块大小 -->
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<!-- configuration for DateNode:-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/zachary/hadoop-2.10.0/data</value>
</property>
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
------------
<!--mapred-site.xml-->
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
------------
<!--mapred-site.xml-->
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- configuration for ResourceManger: -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>zahcary-pc</value>
</property>
<!-- configuration of NodeManager: reducer获取数据方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 配置外网只需要替换外网ip为真实ip,否则默认为 localhost:8088 -->
<!-- <property>
<name>yarn.resourcemanager.webapp.address</name>
<value>外网ip:8088</value>
</property> -->
</configuration>配置SSH免密登录
在hadoop根目录下,输入
1
2
3
4生成公钥和秘钥,他们生成后是家目录(~)下的id_rsa和id_rsa.pub前者为私钥,后者为公钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys格式化
namenode
1
bin/hdfs namenode -format
启动守护程序
1
sbin/start-dfs.sh
启动hadoop,在
sbin
目录下1
2
3
4./start-all.sh
启动
./stop-all.sh
关闭输入
jsp
,如果有6个进程出现,说明启动成功访问端口50070就是HDFS管理界面
查看端口8088,结点管理页面
Hadoop命令行基本的操作
1 | bin/hdfs dfs -mkdir /user/t |
Hadoop 源码编译
环境要求
- 要求
apache-ant
- 要求
jdk1.7
(亲自尝试,jdk1.8
在最后会报出一大片红色Error) - 要求
maven
(maven要求在3.3.0以上,最好选择最新版本的maven) - 要求剩余磁盘大于两个G(
df -h
查看剩余磁盘容量) - 编译
hadoop-2.10.0-src.tar.gz
编译过程
Maven配置
- 解压软件到一个位置。
- 在
/etc/profile
中配置环境路径 - 使用
mvn -version
查看版本信息
Tips:如果下载太慢的话,可以中断后,执行mvn -clean
然后换成阿里的镜像,重新下载
ANT配置
- 同Maven的安装的配置,解压缩
- 在
/etc/profile
中配置环境路径 - 使用
ant -version
查看版本信息
安装glibc-headers
和g++
1 | sudo yum install glibc-headers |
安装配置protobuf
- 解压文件
- 进入到
protobuf-2.5.0
目录下 ./configure
命令make
命令make check
命令make install
命令ldconfig
命令- 配置环境变量
环境变量配置如图
注意!!protobuf没有bin,不需要配置到bin下
如果配置环境后,查看版本没有成功,就输入source /etc/profile
重编一下path
安装其他环境
1 | sudo yum install openssl-devel |
开始编译
解压
hadoop
源码包到指定目录进入该目录,使用mvn执行编译(这个过程十分漫长,请耐心等待)
df -h
查看磁盘1
2注意!!!查看磁盘是否足够,是否有2g以上,然后再执行命令(在漫长的等待后,我因为磁盘不足,failed一次,血的教训)
mvn package -Pdist,native -DskipTests -Dtar如果你的版本和我要求的版本都一样的话(要求jdk1.7、Maven3.3.0+、ant无要求,protobuf2.5)是可以成功的
- 成功