目录
一、Hadoop概念
Block一般128MB一个;
元数据:一个表,对应着数据所在的路径。
master重启的方式
二、Hadoop的安装
2.1 安装
mkdir /usr/hadoop #创建/usr/hadoop
上传hadoop-2.7.3.tar.gz
到/opt/soft
下
tar -zxvf hadoop-2.7.3.tar.gz -C /usr/hadoop # 解压/opt/soft/hadoop-2.7.3.tar.gz到 指定目录
2.2配置环境变量
nano /etc/profile
,添加下面4行
# hadoop setting
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin
保存退出之后,使环境变量生效 source /etc/profile
在安装好Hadoop和配置完环境变量之后,Hadoop已经可以做一些事情了。
2.3测试单机hadoop
创建一个文件夹,我这里创建在hadoop文件夹下
/usr/hadoop
mkdir mytestin
cd mytestin
nano data1.txt
nano data2.txt
data1.txt和data2.txt你可以输入一些字符(随便打几个英文单词)。
然后我们到hadoop-2.7.3目录下
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /usr/hadoop/mytestin /usr/hadoop/mytestout
hadoop是命令,jar是程序类型,后面是路径+jar 然后是输入目录,输出目录。jar =java包。
注意:每次运行此命令要求输出目录是一个全新目录(不存在的目录)。
我们一般使用Java输入和输出都在终端完成,但是hadoop的输入和输出的数据量十分巨大,所以我们要用输入和输出目录来存放。
用hadoop fs
命令查看程序结果:
hadoop fs -text /usr/hadoop/mytestout/part-r-00000 # 或者使用cat
三、Hadoop集群配置
在上面我们讲了单机版的hadoop,现在我们来配置集群
3.1配置hadoop-env.sh
cd /usr/hadoop/hadoop-2.7.3/etc/hadoop
编辑hadoop-env.sh
, nano hadoop-env.sh
,注释原来的,修改如下。
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_171
3.2配置core-site.xml
nano core-site.xml
,在<configuration>
和 </configuration>
之间配置
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value> #改名
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hadoop-2.7.3/hdfs/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>fs.checkpoint.period</name> # 检查间隔60s
<value>60</value>
</property>
<property>
<name>fs.checkpoint.size</name> # 检查点大小
<value>67108864</value>
</property>
3.3配置yarn-site.xml
nano yarn-site.xml
,如果你的主机名不是master你就需要改名。
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value> # 改名
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value> # 改名
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value> # 改名
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value> # 改名
</property>
<property>
<name>yarn.resourcemanager-tracker.address</name>
<value>master:18025</value> # 改名
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</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>
3.4 编辑slaves和master
nano slaves
,有几个写几个。
slave1
slave2
nano master
master
3.5配置hdfs-site.xml
nano hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value>#Block副本数,默认3
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value> # 注意端口号不会重复使用。
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
3.6配置mapred-ste.xml
复制模板
cp mapred-site.xml.template mapred-site.xml
编辑文件,nano mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3.7分发给从机
scp -r /usr/hadoop root@slave1:/usr
scp -r /usr/hadoop root@slave2:/usr
配置从机的环境变量,
nano /etc/profile
,添加下面4行
# hadoop setting
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin
保存退出之后,使环境变量生效 source /etc/profile
3.8主机namenode格式化
cd /usr/hadoop/hadoop-2.7.3/
hadoop namenode -format
执行命令后如下
3.9 hadoop启动
hadoop不用每台机器都启动,我们再mstaer上调用脚本来启动
[root@master hadoop-2.7.3]# sbin/start-all.sh
然后查看进程
[root@master hadoop-2.7.3]# jps
jps是java提供的一个显示当前所有java进程pid的命令,适合在linux/unix平台上简单察看当前java进程。
主机:
从机,直接输入jps,不用启动hadoop
四、网页
关闭master
防火墙,systemctl stop firewalld
。
打开浏览器输入:192.168.222.171:9001
打开浏览器输入:192.168.222.171:50070,文件系统概述
五、集群运行wordcount(简单应用)
fs方式创建文件夹:hadoop fs -mkdir /myin
把本地txt文件上传到集群中:
hadoop fs -put /usr/hadoop/mytestin/data1.txt /myin
hadoop fs -put /usr/hadoop/mytestin/data2.txt /myin
查看input目录结构:
hadoop fs -ls /myin
运行wordcount:
hadoop jar /usr/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /myin /myout
查看结果:
查看程序结果:
hadoop fs -cat /myout/part-r-00000
hadoop fs -get /myout/part-r-00000 /home #通过get命令,把文件下载到本地