一 、配置jdk环境
参考:https://blog.csdn.net/qq_41020714/article/details/88529827
二、创建Hadoop用户
1. 通过useradd添加用户(创建新用户hadoop):useradd -m hadoop -s /bin/bash
2.为新用户设置密码:passwd hadoop
3.给Hadoop用户添加管理员权限: visudo
找到root ALL=(ALL)ALL这一行,一般在98行附近,然后在这一行下面增加指令:
查看行数:
:set nu
hadoop ALL=(ALL) ALL #中间的间隔为tab
保存退出
4.切换到Hadoop用户:su hadoop
三、配置SSH无密码登陆
1.检查服务器上是否安装和SHH client、SHH server:rpm -qa | grep ssh
如上图就不用安装,否则,可以通过yum进行安装:
yum –y install openssh-clients
yum –y install openssh-clients
2.测试SHH是否可用:ssh localhost
首次登陆会有提示,输入yes即可,然后按提示输入账号密码即可。
上述有密码登陆的方式
3.配置SHH无密码登陆
输入exit回到原先的终端命令窗口,执行以下命令:
cd ~/.ssh/ #若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa #会有提示,都按回车就可以
cat id_rsa.pub >> authorized_keys #加入授权
chmod 600 ./authorized_keys #修改文件权限
四、安装hadoop及验证
1.下载hadoop 地址:http://mirror.bit.edu.cn/apache/hadoop/common/
2.将hadoop解压到安装文件夹(比如:/home/bigdata):
tar -zvxf hadoop-2.7.1.tar.gz -C /home/bigdata
3.进入解压后的文件夹(如:/home/bigdata)更改文件名
mv ./hadoop-2.7.1/ ./hadoop
4.修改文件权限: chown -R hadoop:hadoop ./hadoop
5.检查 hadoop 是否可用,执行以下命令
cd /home/bigdata/hadoop #去到hadoop目录
执行 ./bin/hadoop version #检查hadoop是否可以使用
出现上图正常使用,可能提示报错为:
应该需要如下配置
1) vim /etc/hadoop/hadoop-env.sh 添加java安装路径加进去:
export JAVA_HOME=/usr/java/jdk1.8.0_121
2) 编辑: vim /etc/profile 配置hadoop环境变量(配置此环境变量hadoop常用命令才可以全局化):
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin
:wq! 保存退出后执行:source /etc/profile 使之生效
6、单机测试
Hadoop 默认模式为非分布式模式,执行以下可运行:
cd /home/bigdata/hadoop
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar
7. cd到hadoop目录下(cd /home/bigdata/hadoop),新建一个input文件夹(mkdir input),
将配置文件作为输入文件:cp ./etc/hadoop/*.xml ./input
8.筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,并输出到output文件夹
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep ./input/ ./output 'dfs[a-z.]+'
9.查看output中的运行结果,如下图测试成功
五、配置hadoop dfs和yarn
1、配置hdfs
1) 修改/home/bigdata/hadoop/etc/hadoop/core-site.xml 文件,
<configuration>
<!-- 指定HDFS老大(namenode)的通信地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
</property>
</configuration>
fs.defaultFS直接用localhost就行,如果重命名了主机名,也可以用重命名的。
2) 修改/home/bigdata/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/hadoop/hdfs/name</value>
<description>namenode上存储hdfs名字空间元数据 </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/hadoop/hdfs/data</value>
<description>datanode上数据块的物理存储位置</description>
</property>
<!-- 设置hdfs副本数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3) hdfs启动与停止
第一次启动hdfs需要格式化,之后启动就不需要的:
cd /home/bigdata/hadoop
./bin/hdfs namenode -format
启动命令:./sbin/start-dfs.sh
停止命令:./sbin/stop-dfs.sh
从图中看,会启动namenode,datanode,secondarynamenode
浏览器输入:http://ip:50070 查看效果:
如果访问不了,需要确认是否开通防火墙,端口没开放以下操作:
systemctl status firewalld #查看防火墙是否开启
systemctl start firewalld.service #开启防火墙
1、firewall-cmd --list-ports #查看是否开启相关端口
2、firewall-cmd --permanent --zone=public --add-port=xxxx/tcp #防火墙添加开启的端口
3、systemctl reload firewalld #重启防火墙
2、配置 yarm
1) 配置/home/bigdata/hadoop/etc/hadoop/mapred-site.xml;
hadoop默认是mapred-site.xml.template文件,重命名为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<!-- 通知框架MR使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2) 配置/home/bigdata/hadoop/etc/hadoop/yarn-site.xml文件,
<configuration>
<!-- reducer取数据的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
启动:./sbin/start-yarn.sh
停止:./sbin/stop-yarn.sh
会启动resourcemanager,nodemanager 如图:
可以用jps命令查看启动了什么进程:
浏览器输入:http://192.168.10.191:8088
另外补充:
1) 一般配置如下yarn-site.xml默认端口为8088,
<configuration>
<!-- reducer取数据的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
若默认端口被占用修改以上配置为:
<configuration>
<!-- reducer取数据的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.10.101:34567</value><!--填写自定义的主机名/ip:自定义端口-->
</property>
</configuration>
重启启动yarm,访问http://192.168.10.101:34567 ,如图:
2) hadoop 8088端口无法访问,配置修改为:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>xxxx</value> <!--填写自定义的主机名/ip-->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>0.0.0.0:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>0.0.0.0:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>0.0.0.0:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>0.0.0.0:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>0.0.0.0:8088</value>
</property>
</configuration>