Hadoop
Apache Hadoop 是一个在由通用硬件构建的大型集群上运行应用程序的框架。 Hadoop 框架透明地为应用程序提供可靠性和数据移动。 Hadoop 实施了一种名为 Map/Reduce 的计算范例,其中应用程序被分成许多小的工作片段,每个片段都可以在集群中的任何节点上执行或重新执行。 此外,它还提供了一个分布式文件系统 (HDFS),用于将数据存储在计算节点上,从而在整个集群中提供非常高的聚合带宽。 MapReduce 和 Hadoop 分布式文件系统都经过设计,因此框架可以自动处理节点故障。
安装
配置
默认情况下,hadoop 已配置为伪分布式操作。 一些环境变量在 /etc/profile.d/hadoop.sh
中设置,其值与传统的 hadoop 不同。
环境变量 | 值 | 描述 | 权限 |
---|---|---|---|
HADOOP_CONF_DIR | /etc/hadoop
|
配置文件存储位置。 | 阅读 |
HADOOP_LOG_DIR | /tmp/hadoop/log
|
日志文件存储位置。 | 读写 |
HADOOP_WORKERS | /etc/hadoop/workers
|
命名远程 worker 主机的文件。 | 阅读 |
HADOOP_PID_DIR | /tmp/hadoop/run
|
pid 文件存储位置。 | 读写 |
您还应该正确设置以下文件。
/etc/hosts /etc/hostname /etc/locale.conf
您需要在 /etc/hadoop/hadoop-env.sh
中告诉 hadoop 您的 JAVA_HOME,因为它不会自行假定它在 Arch Linux 中的安装位置
/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/default
使用以下命令检查安装
$ hadoop version
HADOOP_WORKERS 选项之前称为 HADOOP_SLAVES。 如果您收到警告消息“WARNING: HADOOP_SLAVES has been replaced by HADOOP_WORKERS. Using value of HADOOP_SLAVES.”,则将 /etc/profile.d/hadoop.sh
中的 export HADOOP_SLAVES=/etc/hadoop/slaves
替换为
export HADOOP_WORKERS=/etc/hadoop/workers
单节点设置
单机操作
默认情况下,Hadoop 配置为在非分布式模式下作为单个 Java 进程运行。 这对于调试很有用。
以下示例复制解压缩的 conf 目录用作输入,然后查找并显示给定正则表达式的每个匹配项。 输出将写入给定的输出目录。
$ HADOOP_CONF_DIR=/usr/lib/hadoop/orig_etc/hadoop/ $ mkdir input $ cp /etc/hadoop/*.xml input $ hadoop jar /usr/lib/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar grep input output 'dfs[a-z.]+' $ cat output/*
伪分布式操作
Hadoop 也可以在单节点上以伪分布式模式运行,其中每个 Hadoop 守护程序都在单独的 Java 进程中运行。
默认情况下,Hadoop 将以 root 用户身份运行。 您可以在 /etc/conf.d/hadoop
中更改用户
HADOOP_USERNAME="<your user name>"
设置免密码 SSH
确保您已启用 sshd。 现在检查您是否可以在没有密码的情况下连接到 localhost
$ ssh localhost
如果您无法在没有密码的情况下 ssh 连接到 localhost,请执行以下命令
$ ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys
还要确保在 /etc/ssh/sshd_config
中注释掉此行
/etc/ssh/sshd_config
#AuthorizedKeysFile .ssh/authorized_keys
执行
格式化新的分布式文件系统
$ hadoop namenode -format
编辑 /etc/hadoop/core-site.xml
并添加以下配置
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://127.0.0.1:9000</value> </property> </configuration>
启动 hadoop namenode
$ hadoop namenode
您可以通过 https://127.0.0.1:9870/ 访问 Web GUI
启动 以下 hadoop systemd 单元:hadoop-datanode
、hadoop-jobtracker
、hadoop-namenode
、hadoop-secondarynamenode
、hadoop-tasktracker
。
hadoop 守护程序日志输出被写入 ${HADOOP_LOG_DIR}
目录(默认为 /var/log/hadoop
)。
浏览 NameNode 和 JobTracker 的 Web 界面; 默认情况下,它们位于
- NameNode - https://127.0.0.1:50070/
- JobTracker - https://127.0.0.1:50030/
将输入文件复制到分布式文件系统
$ hadoop fs -put /etc/hadoop input
运行一些提供的示例
$ hadoop jar /usr/lib/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+'
检查输出文件
将输出文件从分布式文件系统复制到本地文件系统并检查它们
$ hadoop fs -get output output $ cat output/*
或
在分布式文件系统上查看输出文件
$ hadoop fs -cat output/*
完成后,停止 守护程序 hadoop-datanode
、hadoop-jobtracker
、hadoop-namenode
、hadoop-secondarynamenode
、hadoop-tasktracker
。