Hadoop 入门学习,快速搭建伪分布式环境。
注:需要下载的安装包在文章底部,请自行获取。
1. 修改主机名
vim /etc/hostname
vim /etc/hosts
reboot
reboot 重启主机使修改配置文件生效,这里我设置的主机名是 : cx。
注意:出于安全考虑,如果只想局域网访问 127.0.0.1 cx 就可以 如果不在远程服务器,不在一个局域网,可以配置成 0.0.0.0 cx 运行所以IP都可以访问 【hadoop安装完成并正确启动会,后查看监听端口 netstat -tpnl |grep 8020,就会看到你配置的IP及监听的8020端口】
[root@cx hadoop]# cat /etc/hosts
0.0.0.0 cx
127.0.0.1 localhost
127.0.1.1 localhost
::1 localhos
[root@cx hadoop]# netstat -tpnl |grep 8020
tcp 0 0 0.0.0.0:8020 0.0.0.0:* LISTEN 10046/java
[root@cx ~]# hostname
cx
2. 免密登陆
删除已有的 ssh 配置,使用命令 rm -r ~/.ssh 进行删除 ;
生成新的 ssh-key ,使用命令 ssh-keygen -t rsa ;
-为本机进行公钥的注册:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh-keygen -t rsa
clear
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
或者 ssh-copy-id slave2形式 这个也可以自己给自己copy
ssh-copy-id cx
3. 安装JDK
下载JDK包,开始安装,默认安装的位置是在/usr/java/ 目录下
rpm -ivh jdk-8u91-linux-x64.rpm
设置java环境变量 vim /etc/profile
JAVA_HOME=JAVA_HOME=/usr/java/jdk1.8.0_91
PATH=$PATH:$JAVA_HOME/bin:
export PATH JAVA_HOME
source /etc/profile 是环境变量生效
[root@cx local]# vim /etc/profile
[root@cx local]# source /etc/profile
[root@cx local]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
java -version 验证是否安装成功
4. 安装Hadoop
将下载好的hadoop包解压移动到 /user/local/ 目录下
mv hadoop-2.7.3.tar.gz /usr/local/
解压文件
cd /usr/local/hadoop
tar -xvf hadoop-2.7.3.tar.gz
重命名解压出来的文件,并进去改名后的文件夹,分别建立 hdfs/tmp、hdfs/name、hdfs/data目录
mv hadoop-2.7.3.tar.gz hadoop
cd ./hadoop
mkdir -p hdfs/{data,name,tmp}
5. Hadoop配置
在 /usr/local/hadoop/etc/hadoop 下配置各个文件
进入目录 cd /usr/local/hadoop/etc/hadoop
- 配置hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_91
export HADOOP_PID_DIR=/usr/local/hadoop/hdfs/tmp
export HADOOP_MAPRED_PID_DIR=/usr/local/hadoop/hdfs/tmp
export YARN_PID_DIR=/usr/local/hadoop/hdfs/tmp
<property>
<name>fs.defaultFSname>
<value>hdfs://cx:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/usr/local/hadoop/hdfs/tmpvalue>
property>
<property>
<name>dfs.replicationname>
<value>1value>
property>
#这个是设置block大小为3M,默认为124M
<property>
<name>dfs.block.sizename>
<value>3145728value>
property>
<property>
<name>dfs.namenode.name.dirname>
<value>/usr/local/hadoop/hdfs/namevalue>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>/usr/local/hadoop/hdfs/datavalue>
property>
<property>
<name>dfs.permissions.enabledname>
<value>falsevalue>
property>
cp mapred-site.xml.templete mapred-site.xml
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
vim slaves 将localhost改成主机名/添加主机名
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
Hadoop启动
第一次启动hadoop之前需要格式化namenode节点,命令为hadoop namenode -format。
两种方式启动方式,可按需选择,全部启动还是,只启动相应功能
1、全部启动 :start-all.sh
2、分开启动:单独启动hdfs start-hdfs.sh;单独启动yarn start-yarn.sh
jps 查看是否启动成功。
start-hdfs.sh 会启动文件系统的 namenode datanode
start-yarn.sh 会启动资源调度 ResourceManager NodeManager
停止也有2种方式:
1、停止全部 stop-all.sh
2、分开停止:1、停止hdfs stop-hdfs.sh;2、停止yarn stop-yarn.sh
输入 jps 查看
[root@cx hadoop]# jps
23104 DataNode
23265 SecondaryNameNode
23810 Jps
1971 Application
10951 ResourceManager
22972 NameNode
7406 Bootstrap
12302 NodeManager
浏览器输入你搭建的服务器地址加端口 50070 查看网页版hadoop集群信息
实例:http://127.0.0.1:50070
建立一个hello.txt 文件,输入命令上传到hadopp并查看
hadoop fs -ls / 查看上传的文件
[root@cx ~]# hadoop fs -put ./hello.txt /
[root@cx ~]# hadoop fs -ls /
Found 1 items
-rw-r--r-- 1 root supergroup 44 2017-10-25 09:30 /hello.txt
hello java
hello java
hello c
hello c++
hello python
hello java
这里我建立了一个input.txt放入到 hdfs /input/目录下,使用hadoop提供的demo做词频统计
hadoop fs -mkdir /input
hadoop fs -put /input/input.txt
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /input/input.txt /output
回车后,在http://127.0.0.1:8088 查看该次任务的执行情况
完毕后,在http://127.0.0.1:50070 里查看文件,在/output目录下会有一个_SUCCESS 文件 和 part-r-00000文件
输入命令 hadoop fs -text /input/input.txt 查看输出结果
[root@cx hadoop]# hadoop fs -text /input/input.txt
hello java
hello java
hello c
hello c++
hello python
hello java
**
单台hadoop布置完毕后
先给集群机器配置 IP和主机名(有多少加多少)
改主机名参阅 伪分布式第一步
vim /etc/hostname
vim /etc/hosts
reboot
[root@master ~]# cat /etc/hosts
192.168.56.100 master
192.168.56.101 slave1
192.168.56.102 slave2
192.168.56.103 slave3
192.168.56.105 master1
ssh-keygen -t -rsa 在master上生产私钥公钥
然后把公钥copy到集群主机上,master也需要一份,因为即使是本次操作,对于hadoop而言也是远程登陆操作
[root@master ~]# ssh-copy-id slave1
[root@master ~]# ssh-copy-id slave2
[root@master ~]# ssh-copy-id slave3
[root@master ~]# ssh-copy-id master
[root@master ~]# ssh-copy-id master1
core-site.xml
<property>
<name>fs.defaultFSname>
<value>hdfs://master:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/usr/local/hadoop/hdfs/tmpvalue>
<description>Abase for other temporary directories.description>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>master1:50090value>
property>
property>
hdfs-site.xml
<property>
<name>dfs.replicationname>
<value>3value>
property>
<property>
<name>dfs.namenode.name.dirname>
<value>file:///usr/local/hadoop/hdfs/namevalue>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>file:///usr/local/hadoop/hdfs/datavalue>
property>
<property>
<name>dfs.block.sizename>
<value>3145728value>
property>
<property>
<name>dfs.permissions.enabledname>
<value>falsevalue>
property>
slaves
[root@master hadoop]# cat slaves
slave1
slave2
slave3
masters 这个要新建
[root@master hadoop]# cat masters
master1
配置完毕复制配置到每个datanode上
scp -r /usr/local/hadoop/etc/hadoop slave1:/usr/local/hadoop/etc/hadoop
然后 start-dfs.sh启动集群,hdfs文件系统启动
192.168.56.100:50070 查看hdfs集群信息
yarn的ResourceManager NodeManager配置
<configuration>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>mastervalue>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.classname>
<value>org.apache.hadoop.mapred.ShuffleHandlervalue>
property>
configuration>
集中管理这个不需要所有节点都配置,只需要namenode上配置
[root@master hadoop]# start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /usr/local/hadoop/logs/yarn-root-resourcemanager-master.out
slave3: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-slave3.out
slave1: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-slave1.out
slave2: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-slave2.out
[root@master hadoop]# jps
2132 ResourceManager
2206 Jps
192.168.56.100:8088(默认端口) 查看yarn集群信息
配置 mapred-site.xml
没有的话这个配置文件的话,先从模板复制一份
cp mapred-site.xml.template mapred-site.xml
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
mapreduce默认在本地运行,这里写死在yarn框架上运行。
测试方式和伪分布式运行一样。
http://127.0.0.1:50070
http://127.0.0.1:8088
百度网盘链接:http://pan.baidu.com/s/1mif14Qs 密码:wg7p
如有疑问,请及时联系作者。
安装可能存在问题:
datanode无法启动
多次格式化导致版本不一致,解决办法,删除hdfs/{data,name,tmp} 文件夹,并重新建立
HDFS启动不了时,先互相ping,看是否测试成功,若不成功,注意防火墙的影响。关闭windows或虚拟机的防火墙。
systemctl stop firewalld
systemctl disable firewalld
未完,待续……
大佬的风向标