hadoop由浅入深
1. 大数据
结构化数据: 数据库数据
半结构化数据: html,xml,json
非结构化数据: 日志,没有元数据
搜索引擎: 搜索组件 索引组件
蜘蛛程序
存储
分析处理
HDFS+MapReduce=Hadoop
批处理
2. Hadoop Distribution
分发版本
Cloudera: CDH
Hortonworks: HDP
Intel: IDH
3. Hadoop:存储和处理平台
hdfs: 集群: NN(名称节点) SNN(第二名称节点) DN(数据节点)
mapreduce: 集群: JobTracker, TaskTracker
JT: 集群资源管理和作业管理
TT: 执行任务
YARN:
RM
NM
AM
container
4. Hadoop模型
1. 单机模型 测试使用
2. 伪分布式模型 运行于单机
3. 集群模型
4. hadoop官网 https://hadoop.apache.org
5. 伪分布式模型
1. 安装jdk1.8
yum install java-1.8.0-openjdk.x86_64
yum install java-1.8.0-openjdk-devel.x86_64
yum install java-1.8.0-openjdk-headless.x86_64
vi /etc/profile.d/java.sh
export JAVA_HOME=/usr
. /etc/profile.d/java.sh
2. 下载hadoop程序包
hadoop-2.6.2 jdk 1.6+
hadoop-2.7 jdk 1.7+
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
3. 安装hadoop
创建安装目录
mkdir /bdapps
解压hadoop文件到安装目录
tar -zxvf hadoop-2.7.7.tar.gz -C /bdapps/
创建软链接
cd /bdapps
ln -sv hadoop-2.7.7 hadoop
设置环境变量
vi /etc/profile.d/hadoop.sh
export HADOOP_PREFIX=/bdapps/hadoop
export PATH=$PATH:${HADOOP_PREFIX}/bin:${HADOOP_PREFIX}/sbin
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_MAPPRED_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
运行一下
. /etc/profile.d/hadoop.sh
创建用户和组
groupadd hadoop
useradd -g hadoop yarn
useradd -g hadoop hdfs
useradd -g hadoop mapred
创建数据目录
mkdir -pv /data/hadoop/hdfs/{nn,snn,dn}
chown -R hdfs.hadoop /data/hadoop/hdfs
创建日志目录
cd /bdapps/hadoop
mkdir logs
chmod g+w logs
chown yarn.hadoop ./*
编写hadoop的配置文件
/bdapps/hadoop/etc/hadoop/core-site.xml 用来指定运行的namenode的地址和端口,对于伪分布式模型来说,主机地址为localhost,namenode默认使用的端口是8020。内容如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:8020</value>
<final>true</final>
</property>
</configuration>
/bdapps/hadoop/etc/hadoop/hdfs-site.xml 主要用于配置HDFS相关的属性,例如复制因子,NN和DN用于存储数据的目录。伪分布式的数据副本数为1。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop/hdfs/nn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/hadoop/hdfs/dn</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>file:///data/hadoop/hdfs/snn</value>
</property>
<property>
<name>fs.checkpoint.edits.dir</name>
<value>file:///data/hadoop/hdfs/snn</value>
</property>
</configuration>
/bdapps/hadoop/etc/hadoop/mapred-site.xml 用于配置集群的mapreduce framework,此处应该指定yarn,另外的可用猴子还有local和classic。
cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
/bdapps/hadoop/etc/hadoop/yarn-site.yml 用于配置YARN进程及YARN的相关属性,首先需要指定RM守护进程的主机和监听的端口,对于伪分布式模型,主机为localhost,
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>localhost:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>localhost:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>localhost:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>localhost:8088</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
</configuration>
/bdapps/hadoop/etc/hadoop/hadoop-env.sh和/bdapps/hadoop/etc/hadoop/yarn-env.sh,之前配置了JAVA_HOME环境变量,这两处不需要配置。
/bdapps/hadoop/etc/hadoop/slaves 存储当前集群的所有slave节点,对于伪分布式集群,其内容为localhost。
格式化HDFS
在HDFS的NN启动之前需要先初始化用于存储数据的目录。使用之前创建的用户hdfs,进行格式化。
hdfs namenode -format
显示结果中:/data/hadoop/hdfs/nn has been successfully formatted. 表示格式化完成了。
启动hadoop
1. 启动hdfs的三个服务
使用hdfs用户,启动三个服务
hadoop-daemon.sh start namenode
会产生日志文件:/bdapps/hadoop/logs/hadoop-hdfs-namenode-node2cp.log
使用jps命令,查看一下java进程
hadoop-daemon.sh start secondarynamenode
会产生日志文件:/bdapps/hadoop/logs/hadoop-hdfs-secondarynamenode-node2cp.log
hadoop-daemon.sh start datanode
会产生日志文件:/bdapps/hadoop/logs/hadoop-hdfs-datanode-node2cp.log
2. 启动yarn集群的两个服务
切换到yarn用户,启动resourcemanager服务。
yarn-daemon.sh start resourcemanager
启动nodemanager服务
yarn-daemon.sh start nodemanager
运行测试程序
su - hdfs
yarn jar /bdapps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /test/fstab /etc/fstab.out
hdfs dfs -cat /etc/fstab.out/part-r-00000 查看运行测试后的结果
6. 验证服务是否启动成功
hadoop version 查看hadoop版本
hdfs dfs -mkdir /test
hdfs dfs -put /etc/fstab /test/fstab
hdfs dfs -ls /test
警告信息:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
处理方法:
在//usr/local/hadoop-2.5.2/etc/hadoop/log4j.properties文件中添加 log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
查看真实对应的文件: data/hadoop/hdfs/dn/current/BP-1504412268-192.168.1.139-1467344833938/current/finalized/subdir9/subdir146/blk_1074369142
7. hadoop集群有两个web接口
master节点
master_ip:50070
master_ip:8088
7. hdfs命令使用
8. yarn管理命令使用
yarn resouremanager
yarn nodemanager
yarn jar
yarn application

浙公网安备 33010602011771号