Hadoop实战

Hadoop 集群安装

准备有2台主机, 登陆到2台(或者多台)服务器 修改 /etc/hosts,内容如下

多台服务器,可用 salt 相关命令批管理。

  • 192.168.33.33 namenode
  • 192.168.33.10 datanode

创建 Hadoop 用户组

  • groupadd hadoop
  • useradd -g hadoop hadoop

配置 namenode 免密登陆 datanode

  • ssh-keygen -t rsa 一路回车,生成公钥
  • .ssh/id_rsa.pub 的内容写入到 datanode 的 ~/.ssh/.ssh/authorized_keys
  • 修改 datanode 目录权限 chmod 600 .ssh chmod 700 .ssh/.ssh/authorized_keys

如果不成功,就是 /etc/ssh/sshd_config 的某些配置不正确

在 namenode/datanode 分别安装 java 环境

yum install java java-devel

安装 hadoop-2.9.0

hadoop 的安装为绿色安装。规划安装目录为 /hadoop-2.9.0

  • 下载 wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-2.9.0/hadoop-2.9.0.tar.gz

修改配置文件 /hadoop-2.9.0/etc/hadoop/

  • slaves

添加 datanode, 每行一行,本例中: datanode

  • core-site.xml
1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop-2.9.0/tmp</value>
</property>
</configuration>
  • hdfs-site.xml
1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/hadoop-2.9.0/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/hadoop-2.9.0/dfs/data</value>
</property>
</configuration>
  • mapred-site.xml 首先要 cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
1
2
3
4
5
6
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
  • yarn-site.xml
1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>namenode</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
  • hadoop-env.sh
1
export JAVA_HOME=/usr/lib/jvm/java-openjdk

把 namenode 的 hadoop 软件发送到各个datanode

1
2
3
tar -zcf ./hadoop-2.9.0.tar.gz ./hadoop-2.9.0
scp hadoop-2.9.0.tar.gz datanode:/
tar -xvf hadoop-2.9.0.tar.gz

设置 JAVA_HOME

1
2
3
4
#set java environment
export JAVA_HOME=/usr/lib/jvm/java-openjdk
export HADOOP_HOME=/home/wwwroot/hadoop/hadoop-2.9.0
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/sbin:${HADOOP_HOME}/bin:$PATH

格式化文件系统

hdfs namenode -format

启动

1
2
3
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

成功后通过 jps 命令可以在 namenode 看到

1
2
3
4
NameNode、
ResourceManager、
SecondrryNameNode、
JobHistoryServer

在 datanode 通过 jps 可以看到

1
2
DataNode
NodeManager

参考:

QA

开启分布式后,运行 job 会感觉慢?

因为自己的机器内存不足,所以开发测试情况下,建议用单机模式。

如何让 system.out.println() 打印到控制台?

默认是可以打印出的,如果没有打印出,应该是之前配置过 mapred-site.xml。 把里面的配置删掉或者注释掉,就可以打印到控制台了。