Hadoop全分布
- 前期准备:克隆三台虚拟机。
- 修改三台主机的用户名:hostnamectl set-hostname 跟修改后的用户名。
注意:修改后记得重启服务。
- 配置网关:vim /etc/sysconfig/network-scripts/ifcfg-ens33
网关生效:systemctl restart network
- 禁用selinux : vim /etc/selinux/config
- SELINUX=disabled
- 关闭防火墙:systemctl stop firewalld.Service
- 添加ip和用户名:vim /etc/hosts (三台都要操作)
配置免密登录
- 生成密钥:ssh-keygen
- 进入ssh:cd .ssh
-
生成密钥文件:cat id_rsa.pub >>authorized_keys - node1上面的公钥分发下去:ssh-copy-id 跟用户名或ip
- 禁用selinux:vim /etc/selinux/config
SELINUXTYPE=disabled
- 在opt下创建两个文件夹:mkdir /opt/so
Mkdir /opt/module
- 将jdk和hadoop解压到/opt/module:tar -zxvf 文件名 -C /opt/module
tar -zxvf 文件名 -C /opt/module
-
添加jdk和hadoop的环境变量:
- vim /etc/profile
#java
export JAVA_HOME=/opt/module/jdk
export PATH=$PATH:$JAVA_HOME/bin
#hadoop
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_JOURNALNODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
- 环境变量生效:source /etc/profile
- 查看版本号:java -version
hadoop version
修改相关配置文件
- 进入/etc/hadoop:cd /opt/module/hadoop-3.1.3/etc/hadoop
- 添加jdk的路径:vim hadoop-env.sh
添加hadoop里面的四个参数
- vim core-site.xml
<configuration>
<!-- �~L~G��~Z NameNode �~Z~D�~\��~]~@ -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<!-- �~L~G��~Z Hadoop �~U��~M��~Z~D��~X�~B��~[���~U -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop/data</value>
</property>
<!-- �~E~M置 HDFS ��~Q页�~Y���~U使�~T��~Z~D�~]~Y�~@~A�~T��~H�为 mastt
er -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>master</value>
</property>
</configuration>
- vim hdfs-site.xml
<configuration>
<!-- nn(NameNode) web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>master:9870</value>
</property>
<!-- 2nn(SecondaryNameNode) web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:9868</value>
</property>
</configuration>
- vim yarn-site.xml
<configuration>
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave1</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_MAPRED_HOME</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
- mapred-site.xml
<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<!-- 历史服务器 web 端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
- 添加用户名:vim workers
hadoop0出现节点为: DataNode NodeManager NameNode
hadoop1出现节点为: DataNode NodeManager ResourceManager
hadoop2出现节点为: DataNode Secondary NameNode NodeManager
分发
- 拷贝profile:
scp /etc/profile node2:/etc/profile
scp /etc/profile node3:/etc/profile
- 拷贝jdk:
scp -r /opt/module/jdk1.8.0_212 node2:/opt/module
scp -r /opt/module/jdk1.8.0_212 node3:/opt/module
- 拷贝hadoop:
scp -r /opt/module/hadoop-3.1.3 node2:/opt/module
scp -r /opt/module/hadoop-3.1.3 node3:/opt/module
- 格式化:hadoop namenode -format
- 启动hadoop: start-all.sh
关闭hadoop: stop-all.sh
- 进入sbin下:start-dfs.sh
- 启动mprds:start-yarn.sh
- 访问namenode端口号:8088
报错:
Attempting to operate on hdfs datanode as root ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
解决方法:在环境变量中加入
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
hadoop简单操作
- hdfs:文件存储系统
- hdfs:集群资源管理和调度
- mapRodes:技算框架
- namenode:hdfs访问端口
- hdfs文件一旦写入不允许修改
- 主:namenode从datanode
- 物理上是分块存储的,默认大小是128mb,不足按一个块算。
- hadoop fs -ls / #查看hdfs下的文件
- hadoop fs -mkdir /itcast #创建文件夹
- hadoop fs -put file:/etc/profile hdfs://master:9000/itcast
file操作本地文件系统
hdfs操作hdfs文件系统
也可简写为:hadoop fs -put /etc/profile / #上传到根目录
- hadoop -ls -h / #查看具体内存
- hadoop fs -cat /itheima/2.txt #查看文件内容
- hadoop fs -get /itheima/2.txt #将hdfs文件下载到本地
- hadoop fs -cp /tmp/ss /opt/666.txt #拷贝
- hadoop fs -mv /dsfsdfs /dsfsd #移动
- hadoop fs -appendToFile 2.txt 3.txt #追加合并