Hadoop入门

Hadoop的基本使用。

Hadoop生态

Hadoop生态系统

  • 使用MapReduce处理HBase中的海量数据
  • 利用ZooKeeper作为协同服务
  • HDFS作为高可靠的底层存储,利用廉价集群提供海量数据存储能力
    当然HBase也可以使用本地文件系统而不用HDFS作为底层数据存储方式,不过为了提高数据可靠性和系统健壮性,发挥HBase处理大数据量的能力,一般都使用HDFS作为HBase的底层数据存储方式。
  • Sqoop提供了数据导入功能,比如将RDBMS数据导入到HBase
  • Pig和Hive为HBase提供了高层语言支持

安装

run demo

从官网下载:http://hadoop.apache.org/

事前确保JAVA_HOME已经设置好

查看版本号(运行前确保JAVA_HOME已设置):

1
./bin/hadoop version

运行测试用例:

1
2
3
4
5
6
7
mkdir input
cp etc/hadoop/*.xml input
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce
-examples-3.2.2.jar grep ./input ./output 'dfs[a-z.]+'
# 查看结果
cat output/*
# 输出:1 dfsadmin

伪分布式安装

单节点启动:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

hadoop里的配置文件都在etc目录下面:

  • hadoop-env.sh:配置环境变量
  • core-site.xml:Hadoop core的配置项,如HDFS和MapReduce常用的IO配置等。
  • hdfs-site.xml:Hadoop守护进程的配置,包括NameNode、Secondary NameNode和DataNode等
  • mapred-site.xml:MapReduce守护进程的配置项,包括JobTracker和TaskTracker
  • masters:运行SecondaryNameNode的机器列表
  • slaves:运行DataNode和TaskTracker的机器列表
  • hadoop-metrics.properties:控制metrics在Hadoop上如何发布的属性

修改core-site.xml,指定HDFS的地址和端口号:

1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

修改hdfs-site.xml,配置副本数量、元数据存放的路径、数据存放的路径:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>

初始化HDFS文件系统:

1
./bin/hadoop namenode -format

分布式安装

TODO