hadoop下载网址
wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz
1、关闭防火墙
#停止防火墙,重启后失效
sudo systemctl stop firewalld.service
#禁用防火墙,重启后依然有效
sudo systemctl disable firewalld.service
2、配置主机名
vi /etc/sysconfig/network
例如:
NETWORKING=yes
HOSTNAME=hadoop001
3、配置hosts
vi /etc/hosts
填入以下内容
127.0.0.1 hadoop001
注意原来里面的内容不要删掉
4、生成秘钥,自己与自己免密通信
生成自己的公钥和私钥,生成的公私钥将自动存放在/root/.ssh目录下。
ssh-keygen
把生成的公钥copy到远程机器上
ssh-copy-id -i ~/.ssh/id_rsa.pub [user]@[host]
此时在远程主机的/root/.ssh/authorized_keys文件中保存了公钥,在known_hosts中保存了已知主机信息,当再次访问的时候就不需要输入密码了。
ssh [host]
5、安装jdk1.8
通过fz将jdk安装包上传
解压安装包
tar -zxvf [jdk安装包位置]
配置环境变量
vim /etc/profile
在文件行尾加入配置后保存退出
export JAVA_HOME=/home/app/jdk1.8.0/
export PATH=$JAVA_HOME/bin:$PATH
重新加载profile使配置生效
source /etc/profile
环境变量配置完成,测试环境变量是否生效
echo $JAVA_HOME
java -version
详情
https://blog.csdn.net/starkpan/article/details/81293620
6、安装hadoop
通过fz将hadoop安装包上传到linux
解压安装包
tar -zxvf [hadoop安装包位置]
7、修改hadoop配置文件
(1)修改hadoop-env.sh
通过vim打开
vim [hadoop]/etc/hadoop/hadoop-env.sh
主要是修改java_home的路径,在hadoop-env.sh的第27行,把export JAVA_HOME=${JAVA_HOME}修改成具体的路径。
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_181
重新加载使修改生效
source hadoop-env.sh
(2)修改core-site.xml
vim [hadoop]/etc/hadoop/core-site.xml
增加namenode配置、文件存储位置配置
<configuration>
<property>
<!--用来指定hdfs的老大,namenode的地址-->
<name>fs.defaultFS</name>
<value>hdfs://hadoop001:9000</value>
</property>
<property>
<!--用来指定hadoop运行时产生文件的存放目录-->
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/tmp</value>
</property>
</configuration>
(3)修改hdfs-site.xml
通过vim打开
vim [hadoop]/etc/hadoop/hdfs-site.xml
配置包括自身在内的备份副本数量。
<configuration>
<property>
<!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
<!--单机模式,此值必须为1-->
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
(4)修改 mapred-site.xml
说明:在/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,复制一个
cp mapred-site.xml.template mapred-site.xml
通过vim打开
vim [hadoop]/etc/hadoop/mapred-site.xml
配置mapreduce运行在yarn上
<configuration>
<property>
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(5)修改yarn-site.xml
vim [hadoop]/etc/hadoop/yarn-site.xml
配置
<configuration>
<property>
<!--指定yarn的老大resourcemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop001</value>
</property>
<property>
<!--NodeManager获取数据的方式-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
(6)修改slaves
vim slaves
hadoop001
(7)配置hadoop环境变量
vim /etc/profile
export HADOOP_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0
export PATH=$HADOOP_HOME/bin:$PATH
重新加载profile使配置生效
source /etc/profile
环境变量配置完成,测试环境变量是否生效
echo $HADOOP_HOME
reboot
(9)格式化namenode
进入 hadoop/bin 输入命令格式化namenode
hadoop namenode -format(hdfs namenode -format 以前的方式)
在格式化的时候,会有这样的输出:
Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted
8、启动hadoop
在/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/sbin目录下
start-all.sh
9、关闭hadoop
在/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/sbin目录下
stop-all.sh
10、hafs命令
hadoop fs -mkdir /user/trunk
hadoop fs -ls /user
hadoop fs -lsr /user (递归的)
hadoop fs -put test.txt /user/trunk
hadoop fs -put test.txt . (复制到hdfs当前目录下,首先要创建当前目录)
hadoop fs -get /user/trunk/test.txt . (复制到本地当前目录下)
hadoop fs -cat /user/trunk/test.txt
hadoop fs -tail /user/trunk/test.txt (查看最后1000字节)
hadoop fs -rm /user/trunk/test.txt
hadoop fs -rmdir /user/trunk
hadoop fs -help ls (查看ls命令的帮助文档)
11、通过浏览器访问hadoop管理页面
http://[server_ip]:50070
**如果访问不了有可能是服务器50070端口被关闭了。通过如下方式打开50070端口:
service iptables status #查询防火墙状态
service iptables start #开启防火墙
iptables -I INPUT -p tcp --dport 80 -j ACCEPT #开通特定端口
iptables -I INPUT -p tcp --dport 80 -j DROP #关闭特定端口
service iptables save #保存配置
service iptables restart #重启防火墙
12、其他启动方式
./start-all.sh是一次启动所有的hadoop组件,相当于./start-dfs.sh和./start-yarn.sh
单独启动文件管理节点
./start-dfs.sh
启动后节点为
4688 NameNode
4857 SecondaryNameNode
4763 DataNode
./start-yarn.sh
4688 NameNode
4857 SecondaryNameNode
4763 DataNode
5052 NodeManager
4973 ResourceManager
13、多次进行hadoop namenode formate会导致datanode启动失败,原因是datanode的clusterID 和 namenode的clusterID 不匹配。
日志异常
FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to starkpan/127.0.0.1:8020. Exiting.
java.io.IOException: All specified directories are failed to load.
如果是测试环境可以停止hadoop集群,将/Users/hadoop001/app/hadoop-2.6.0-cdh5.7.0/tmp数据直接删掉,重新格式化namenode,重启即可。这样,所有的测试数据都将丢失
如果不能删除,则需要手动更改namenode和datanode中的Version文件中的clusterID,修改为一致即可。
datanode的VERSION路径:/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/tmp/dfs/data/current/VERSION
namenode的VERSION路径:/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/tmp/dfs/name/current/VERSION