Hadoop环境搭建
配置jdk
参考上篇博文:https://editor.csdn.net/md/?articleId=121432910 本机路径:/usr/java/jdk1.8.0_121
安装&配置
上传hadoop
官网hadoop.apache.org下载hadoop,使用版本:3.2.2 上传hadoop-3.2.2.tar.gz到服务器/tmp下。 [ /tmp目录会定时清除没有使用的文件,默认30天。]
新建用户、工作目录
useradd hadoop mkdir sourcecode software app log data lib tmp
移动解压
su - mv /tmp/hadoop-3.2.2.tar.gz /home/hadoop/software/ chown hadoop:hadoop /home/hadoop/software/hadoop-3.2.2.tar.gz
su - hadoop tar -zxvf /home/gulyas/hadoop-3.2.2.tar.gz -C /home/gulyas/app/ 【-C 解压到指定目录】
ln -s hadoop-3.2.2 hadoop
hadoop解压目录说明
bin # hadoop相关命令
etc # 配置文件
include
lib # 存放Hadoop的本地库(对数据进行压缩解压缩功能)
libexec
sbin # hadoop服务启动停止脚本
share # 存放Hadoop的依赖jar包、文档、和官方案例
hadoop配置jdk
vi ./app/hadoop/etc/hadoop/hadoop-env.sh
# 加入以下配置
export JAVA_HOME=/usr/java/jdk1.8.0_121
配置主机名
hostnamectl set-hostname gargantua
ifconfig # 查看内网ip
vi /etc/hosts
172.16.69.205 gargantua # 一定要是本机内网ip
# hosts中不能配置公网ip,否则可能导致9000端口程序访问不到。
# 重启也会导致NameNode起不来。
# 但是如果要配置其他主机NameNode的地址,那一定要配置其他主机的公网ip。
vi /etc/sysconfig/network
HOSTNAME= gargantua
配置伪分布式模式
hadoop的配置文件都在HADOOP_HOME/etc目录下:
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://yogie.com:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/gulyas/tmp/hadoop-${user.name}</value>
</property>
</configuration>
说明:hadoop.tmp.dir在没有配置的情况下已经启动过,如果直接改配置文件的此项配置,会导致NameNode服务启动失败。那是因为,hadoop的每个进程每次启动都会生成一个版本文件.
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>gargantua:9966</value>
</property>
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>gargantua:9966</value>
</property>
</configuration>
如果一台机器挂载了多块物理磁盘,需要对dfs.datanode.data.dir做配置。 例如:一块磁盘的写能力30M/s,装载10快磁盘后,就是300M/s,写同样的数据,后者更高效。多块磁盘是为了存储空间更大,且高效率的读写IO。 肯定比单块磁盘更快。所以在生产上,DataNode的dfs.datanode.data.dir参数必须根据机器的实际情况配置。
hadoop-env.sh
pid文件说明: pid文件记录集群中每个进程启动的pid编号。当执行sbin/stop-dfs.sh或stop-all.sh等命令的时候,hadoop会根据pid文件找到每个进程的pid,然后执行kill -9 pid来关闭进程。
export HADOOP_PID_DIR=/home/hadoop/tmp
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>yogie.com:8123</value>
</property>
</configuration>
配置ssh
ssh-keygen # 一直回车
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 测试
ssh gargantua # 第一次需要输入yes
# 如果还需要输入密码,那么ssh配置或者600权限有问题。
启动
启动hdfs
格式化hdfs文件目录 cd app/hadoop bin/hdfs namenode -format
启动主节点和数据节点 sbin/start-dfs.sh 【启动成功之后,使用jsp查看一下 、 或者使用ps查看】 ps -ef|grep hadoop NameNode:存储的是数据的元数据,例如文件名称,路径,大小等信息。 DataNode:存储的是数据。
启动yarn
sbin/start-yarn.sh
|