ps.由于以前为了方便一直使用CDH版本但是内存占用台列害 电脑32G 内存已经顶天不支持升级了 心思平时学习的时候那么卡就想着 手动搭建一个hadoop 踩坑和搭建的过程记录下 方便自己加深印象和学习
一:首先安装linux 准备虚拟机3台
1) 查看防火墙状态 :systemctl status firewalld
临时关闭:systemctl stop firewalld
开机关闭:systemctl disable firewalld
2)关闭美国联邦一个安全协议
查看下状态 /usr/sbin/sestatus -v
一般都会显示 enable
vim /etc/selinux/config
将里面的SELINUX = enforcing 修改为disabled
如果想临时修改 setenforce 0/1
3)安装jdk
1.首先查看本机自带的jdk和版本 rpm -qa | grep jdk -i
2卸载jdk rpm -ev --nodeps xxxxxx xxxx xxxx
卸载掉这些
3.安装jdk 下载二进制安装包
f1: 先创建一个文件夹 mkdir /usr/java
f2:解压:tar -zxvf xxxxx.tar.gz -C /usr/java
f3:配置环境变量:vim /etc/profile
按一下 ] 到达最低下添加
`export JAVA_HOME=/usr/java/jdk1.8.0_181`
export PATH=$JAVA_HOME/bin:$PATH
PATH=$PATH:$HOME/bin
source /etc/profile
4)修改静态IP
#修改网卡
vi /etc/sysconfig/network-scripts/ifcfg-en33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" #修改完static 为静态ip
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.250.143" #这个是你网卡相对应的 可以在虚拟机菜单栏-》编辑-》虚拟网络编辑-》使用nat连接
#(图片1) 其中前 三个数要一致,第四个数在网络编辑页面 使用DHCP开启设置 -》设置的范围内部 图片4
GATEWAY="192.168.250.2" #此为网关跟 nat 里面一样即可 图片3
NETMASK=255.255.255.0 #此为子掩码设置一样即可 图片2
DNS1=8.8.4.4 #可设置可以不是设置域名解析的 DNS1
DNS2=8.8.8.8
#保存退出后
systemctl restart network
ping www.baidu.com #测试通过后下一步
图片 1
图片 2
图片 3
图片 4
5)修改hostname
vim /etc/hostname #修改成自己定义的名字 比如 hadoop10 或者Bigdata01等等 三个节点都要改不能重复
6)配置hosts 映射文件
vim /etc/hosts # 将 配置好的静态地址卸载前面 后边是自己刚才修改的hostname 要一一对应 e.g 192.168.250.141 hadoop10
# 192.168.250.142 hdaoop20
# 192.168.250.143 hdaoop30
# 配置好了之后可以用 ping 下 hadoop10 看看是否调通
# 这里强调下如果 用外部的 CRT等链接的话 最好也罢windows 的hosts 文件 修改跟上面的一样
#如果有火绒 安全 在安全工具 中有一个修改hosts文件 如果没有可以到
#C:\Windows\System32\drivers\etc\hosts修改
7)时间同步:
自己学习可以用同步aliyun的时
yum -y install ntpdate
ntpdate -u ntp1.aliyun.com
#麻烦一点每次启动都要手动 同步一次 不过自己学习也没什么
二:安装hadoop 我这下载的3.2.2 直接去https://hadoop.apache.org/releases.html
下载即可
1)解压文件 tar -zxvf xxxxx -C /opt
2) 修改配置文件 (配置文件在 hadoop安装目录etc/hadoop 文件夹下面)
1.hadoop-env.sh
vim hadoop-env.sh
#:/JAVA_HOME
JAVA_HOME=/usr/java/jdk1.8.0_181 #此地址为自己JDK 安装目录可自行配置
2.core-site.xml
<property>
<name>fs.defaultFS</name>
<!-->下面的地址为nodename地址hadoop20是一开始配置好的hostname 可以自行选择自己的节点<-->
<value>hdfs://hadoop20</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<!-->此地址是nodename初始化的时候存放文件的路径最好跟hadoop安装目录中这样在初始化失败的时候可以直接将这个目录删除了<-->
<value>/opt/hadoop-3.2.2/hadoopdata</value>
</property>
3.hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop-3.2.2/hadoopdata/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop-3.2.2/hadoopdata/data</value>
</property>
<!-->上面的配置路径就是我们刚才配置好的下面<-->
<!-->保存副本的数量默认3 这里我们学习1 个就够了<-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-->这里没有配置高可用 公司一般使用cdh来管理大数据组件这里就配置一个secondnamenode 自己协调好不要跟主节点一样就行<-->
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop30:50090</value>
</property>
4 yarn-site.xml
<property>
<!-->资源调度的yarn配置主节点 这里就是剩下那一个节点就用这个<-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop10</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- Site specific YARN configuration properties -->
<!-->这里一会说 这个是因为在启动MR 的时候找不到主类的错误配置的如果启动时候不报错可以不用配置<-->
<property>
<name>yarn.application.classpath</name>
<value>/opt/hadoop-3.2.2/etc/hadoop:/opt/hadoop-3.2.2/share/hadoop/common/lib/*:/opt/hadoop-3.2.2/share/hadoop/common/*:/opt/hadoop-3.2.2/share/hadoop/hdfs:/opt/hadoop-3.2.2/share/hadoop/hdfs/lib/*:/opt/hadoop-3.2.2/share/hadoop/hdfs/*:/opt/hadoop-3.2.2/share/hadoop/mapreduce/lib/*:/opt/hadoop-3.2.2/share/hadoop/mapreduce/*:/opt/hadoop-3.2.2/share/hadoop/yarn:/opt/hadoop-3.2.2/share/hadoop/yarn/lib/*:/opt/hadoop-3.2.2/share/hadoop/yarn/*</value>
</property>
<!--这个配置文件呢大概的意思是不去检测nodemanager的内存配置的愿意是在flink-on-yarn的时候会报错Flink on yarn Couldn't deploy Yarn cluster或者The YARN application unexpectedly switched to state FAIL 也可以在配置文件里面修改下不过这里我直接在这里配置-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
5 mapred-site.xml
如果没找到这个文件 cp 一个mapred-site.xml.template mapred-site.xml 修改
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
6 works slaves
#将localhost 删掉 把datanode 节点放进去
hadoop10
hadoop20
hadoop30
配置完成后分发到其他的节点scp -r /Hadoop文件的目录 root@hadoop20:/hadoop安装目录
3)配置环境变量
vim /etc/prifile
export JAVA_HOME=/usr/java/jdk1.8.0_181
export HADOOP_HOME=/opt/hadoop-3.2.2
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
PATH=$PATH:$HOME/bin
source /etc/profile
#测试一下 hadoop
4)初始化 namenode
hadoop namenode -format
#如果环境变量没生效 可以到hadoop安装bin目录下执行
bin/hadoop namenode -format
#出现下面红框里面的信息就是初始化成功 如果失败就像刚才说的删除 hadoopdata 检测报错原因重新初始化
5)启动hadoop
#环境变量生效直接启动 不需要关注主节点
start-dfs.sh
#没生效 在hadoop 安装目录下
sbin/start-dfs.sh
#测试下 如果你是2 版本 主节点:50070 如果是3 版本 主节点:9870 访问web 如果出现 active 访问到启动成功
#启动yarn 启动yarn 的时候要在主节点要不到 resoucemanage启动不了
start-yarn.sh
sbin/start-yarn.sh
#如果没在主节点启动可以单独在主节点启动
yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start resourcemanager
#启动完成后 主节点:8088去访问 如果主节点没启动是访问不了这个界面的
#1、启动 namenode 或者 datenode
# sbin/hadoop-daemon.sh start datanode
# sbin/hadoop-daemon.sh start namenode
#2、启动 yarn nodemanager
# sbin/yarn-daemon.sh start nodemanager
# sbin/yarn-daemon.sh start resourcemanager
6)启动hadoop-3.1.0启动hadoop集群时还有可能可能会报如下错误 Aborting operation.
[root@localhost sbin]# start-all.sh
Starting namenodes on [hadoop]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [hadoop]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
2018-07-16 05:45:04,628 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
解决办法
#解决方案一:
#输入如下命令,在环境变量中添加下面的配置
vi /etc/profile
#然后向里面加入如下的内容
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
#输入如下命令使改动生效
source /etc/profile
#解决方案二:
#将start-dfs.sh,stop-dfs.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
#将start-yarn.sh,stop-yarn.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
7)测似MR
#在hadoop 安装目录/opt/hadoop-3.2.2/share/hadoop/mapreduce 中有一个测试 程序hadoop-mapreduce-examples-3.2.2.jar
hadoop jar hadoop-mapreduce-examples-3.2.2.jar pi 2 2
#启动的时候可能报错
#bin bash bin java 没有那个文件或目录 可以创建一个软连接 把我们的jdk指过去
ln -s /usr/java/jdk1.8.0_181/bin/java /bin/java
#MapReduce:无法加载主类org.apache.hadoop.mapreduce.v2.app.MRA
#这个时候就是上面配置的时候说需要加的文件
hadoop classpath
#复制所有的路径
vim yarn-site.xml
<configuration>
<property>
<name>yarn.application.classpath</name>
<value>输入刚才返回的Hadoop classpath路径</value>
</property>
</configuration>
#重新运行可以跑通了
经过一天的安装终于可以弄好了以后把文档收集起来下次安装就按部就班方便很多