一、Linux环境准备
-
Linux命令查询https://www.linuxcool.com/ http://linux.51yip.com/
-
安装Linux虚拟机
-
安装 sudo apt install open-vm-tools
-
安装 sudo apt install open-vm-tools-desktop
-
(可选)换国内源
sudo apt update 更新软件列表,换源完成。
sudo apt upgrade 更新软件
-
安装常用工具
ssh:sudo apt install ssh vim:sudo apt install vim 网络工具: sudo apt install net-tools Pip工具:sudo apt install python3-pip
SSH
https://www.cnblogs.com/linuxAndMcu/p/10766589.html
https://www.jb51.net/article/156422.htm
SSH分openssh-client和openssh-server
dpkg --list|grep ssh 若结果中没有出现openssh-server,则说明没有安装。
安装客户端:sudo apt install ssh 或者 sudo apt install openssh-client
安装服务端:sudo apt install openssh-server
如果出现
则输入:sudo apt install openssh-client=1:8.2p1-4
SSH常用命令
#查看状态 sudo service ssh status
ps -e |grep ssh
#停止服务 sudo service ssh stop
#启动服务 sudo service ssh start
#重启服务 sudo service ssh restart
#登录 (zhilan为192.168.0.125机器上的用户,需要输入密码。)
#常用格式:ssh [-llogin_name] [-p port] [user@]hostname
ssh zhilan@192.168.0.125
#断开连接 exit
安全要点:
1.密码应该经常换
2.使用非默认端口
3.限制客户端登陆地址
4.禁止管理员登陆5.仅允许有限制用户登陆
6.使用基于密钥的认证
net-tools
https://blog.csdn.net/csdn_kou/article/details/90240586
-
配置静态IP1
坑:在windows 命令行输入ipconfig,查看已经分配的局域网地址,不要设置重复。
查看: ifconfig 或 ip addr
-
配置静态IP2
20.04版本静态ip配置、动态ip配置、双网卡配置https://blog.csdn.net/qq_42255854/article/details/109858464Ubuntu -
设置主机映射
sudo vim /etc/hosts 192.168.68.1 master hostnaamectl sudo vim /etc/hostname master
-
关闭防火墙
https://www.linuxidc.com/Linux/2016-12/138259.htm https://blog.csdn.net/weixin_34293246/article/details/92148586 #查看防火墙状态 sudo ufw status #开启防火墙 sudo ufw enable #关闭防火墙 sudo ufw disable #查看防火墙开机启动状态 chkconfig iptables --list #关闭防火墙开机启动 chkconfig iptables offufw default allow/deny:外来访问默认允许/拒绝ufw allow/deny 20:允许/拒绝 访问20端口,20后可跟/tcp或/udp,表示tcp或udp封包。ufw allow/deny servicename:ufw从/etc/services中找到对应service的端口,进行过滤。ufw allow proto tcp from 10.0.1.0/10 to 本机ip port 25:允许自10.0.1.0/10的tcp封包访问本机的25端口。ufw delete allow/deny 20:删除以前定义的"允许/拒绝访问20端口"的规则
-
SSH免密登录
cd ~/.ssh/ #若没有此目录,执行ssh localhost ssh-keygen -t rsa #改权限https://www.cnblogs.com/songgj/p/8890710.html #.ssh目录的权限为700,其下文件authorized_keys和私钥的权限为600 cat id_rsa.pub >> authorized_keys #>> 是追加内容 > 是覆盖原有内容 或者 ssh-copy-id root@hadoop01 # ssh-copy-id 将key写到远程机器的 ~/.ssh/authorized_key.文件中chown 修改文件和文件夹的用户和用户组属性 1。要修改文件hh.c的所有者.修改为sakia的这个用户所有 chown sakia hh.c 这样就把hh.c的用户访问权限应用到sakia作为所有者2。将目录 /tmp/sco 这个目录的所有者和组改为sakia和组net chown -R sakia:net /tmp/scochmod 修改文件和文件夹读写执行属性 1。把hh.c文件修改为可写可读可执行 chmod 777 hh.c 要修改某目录下所有的文件属性为可写可读可执行 chmod 777 *.* 把文件夹名称与后缀名用*来代替就可以了。 同理若是要修改所有htm文件的属性 chmod 777 *.htm 2。把目录 /tmp/sco修改为可写可读可执行 chmod 777 /tmp/sco要修改某目录下所有的文件夹属性为可写可读可执行 chmod 777 * 把文件夹名称用*来代替就可以了要修改/tmp/sco下所有的文件和文件夹及其子文件夹属性为可写可读可执行 chmod -R 777 /tmp/sco可写 w=4 可读 r=2 可执行 x=1 777就是拥有全权限。根据需要可以自由组合用户和组的权限
二、安装JDK
sudo mkdir /usr/software
sudo chown master /usr/software
cd /usr/software
# Xftp上传jdk到 /usr/software
tar -zxvf jdk-8u271-linux-x64.tar.gz
mv jdk-8u271-linux-x64.tar.gz jdk
# JAVA
export JAVA_HOME=/usr/software/jdk
export JRE_HOME=/usr/software/jdk/jre
export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin#测试
java -version#
1.查看环境配置如下图是1.82.在控制台查看jdk版本发现是1.7,这是应为先安装了1.7之后又升级为1.8的,linux系统文件的软连接没有修改,我们只是吧环境配置的指向地址改成了ldk1.8.3.解决方案3.1 which java ——查看默认的jdk安装路径3.2 通过cd命令进入 /usr/bin ,执行sudo rm -rf java (删除默认的java)执行sudo ln -s $JAVA_HOME/bin/java /usr/bin/java (将自己安装的java链接到默认java安装路径下);sudo rm -rf javac (删除默认的javac)执行sudo ln -s $JAVA_HOME/bin/javac /usr/bin/javac (将自己安装的javac链接到默认javac安装路径下)4.查看jdk版本
三、安装hadoop
# HADOOP
export HADOOP_HOME=/usr/software/hadoop
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin#测试
hadoop version
hadoop配置
-
.在hadoop安装文件根目录创建三个文件夹:tmp hdfs/data hdfs/name
mkdir tmp mkdir -p hdfs/data mkdir -p hdfs/name
注:
tmp:临时文件
name:NameNode数据块
映射信息
data:DataNode中输出存
储位置
-
修改hadoop-env.sh文件
cd /usr/software/hadoop/etc/hadoop vim hadoop-env.shexport JAVA_HOME=/usr/software/jdk
-
修改core-site.xml文件
vim core-site.xml<configuration><!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 --><property><name>fs.default.name</name><value>hdfs://master:9000</value></property><!-- 指定hadoop运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/usr/software/hadoop/tmp</value></property> </configuration>
-
修改hdfs-site.xml文件
vim hdfs-site.xml<configuration><!-- NameNode命名空间文件 --><property><name>dfs.name.dir</name><value>/usr/software/hadoop/hdfs/name</value></property><!-- DataNode数据文件 --><property><name>dfs.data.dir</name><value>/usr/software/hadoop/hdfs/data</value></property><!-- 文件副本数量 --><property><name>dfs.replication</name><value>1</value></property><!-- Web访问入口 --><property><name>dfs.namenode.http-address</name><value>master:50070</value></property><!-- 文件权限 --><property><name>dfs.permissions</name><value>false</value></property><!-- SecondaryNameNode设置 --><property><name>dfs.secondary.http.address</name><value>master:50090</value></property> </configuration>
-
将mapred-site.xml.template复制一份,并改名mapred-site.xml
cp mapred-site.xml.template mapred-site.xml vim mapred-site.xml <!-- 指定mr运行在yarn上 --> <property><name>mapreduce.framework.name</name><value>yarn</value> </property>
-
修改yarn-site.xml文件
vim yarn-site.xml<configuration><!-- Site specific YARN configuration properties --><!-- nodemanager获取数据的方式 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property><!-- 指定yarn主节点 --><property><name>yarn.resourcemanager.hostname</name><value>master</value></property></configuration>
-
格式化NameNode
hadoop namenode -format
-
启动Hadoop
start-all.sh 先启动HDFS sbin/start-dfs.sh 再启动YARN sbin/start-yarn.sh 关闭 stop-all.sh使用jps命令验证 27408 NameNode 28218 Jps 27643 SecondaryNameNode 28066 NodeManager 27803 ResourceManager 27512 DataNodehttp://master:50070(HDFS管理界面) http://master:8088 (MR管理界面)
- Hadoop Single Node Cluster 安装完成
四、 Hadoop Multi Node Cluster 安装
-
对以上创建的Hadoop Single Node Cluster重新创建hdfs/name hdfs/data
cd /usr/softwawre/hadoop/hdfs rm -rf name rm -rf data mkdir name mkdir data
-
克隆虚拟机
- 克隆虚拟机Ubuntu01 到 Ubuntu02 (注:选择完整克隆)
- 克隆虚拟机Ubuntu01 到 Ubuntu03 (注:选择完整克隆)
- 修改克隆虚拟机的主机名和IP (sudo vim /etc/hostname)
-
配置 /etc/hosts
对每个节点执行: sudo vim /etc/hosts192.168.68.4 master 192.168.68.5 data1 192.168.68.6 data2#也可以在本地Windows添加IP映射 #C:\Windows\System32\drivers\etc\hosts
-
SSH免密登录
此时三个节点其实是可以相互登录的,因为其他两个节点是复制的master,里面的公私密钥是一样的,并且公钥已经添加到各自的 ~/.ssh/authorized_keys中。但是常规的做法应该是:SSH免密应该在克隆虚拟机之后,操作如下
#master cd ~/.ssh/ #若没有此目录,执行ssh localhost ssh-keygen -t rsa cat id_rsa.pub >> authorized_keys #data1 cd ~/.ssh/ ssh-keygen -t rsa scp ~/.ssh/id_rsa.pub master@master:~/.ssh/id_rsa.pub.data1 #data2 cd ~/.ssh/ ssh-keygen -t rsa scp ~/.ssh/id_rsa.pub master@master:~/.ssh/id_rsa.pub.data2 #master cd ~/.ssh cat ./id_rsa.pub.data1 >> ./authorized_keys cat ./id_rsa.pub.data2 >> ./authorized_keys scp ~/.ssh/authorized_keys master@data1:~/.ssh/ scp ~/.ssh/authorized_keys master@data2:~/.ssh/ #测试 ssh data1 ssh data2 #如果登录失败,尝试更改authorized_keys权限 chomd 700 ~/.ssh #仅拥有者有读、写权限 chmod 600 ~/.ssh/authorized_keys #仅拥有者有读、写、执行权限
-
配置slaves
#master@master:/usr/software/hadoop/etc/hadoop$ vim slavescd /usr/software/hadoop/etc/hadoop vim slaves master data1 data2 在data1和data2上做同样配置
-
格式化namenode
#master hadoop namenode -format start-dfs.sh start-yarn.sh #start-all.sh jpsmaster节点中有六个进程 5840 Jps 5171 NameNode 5524 SecondaryNameNode 5814 NodeManager 5654 ResourceManager 5335 DataNode data节点中有三个进程 2962 NodeManager 3079 Jps 2829 DataNodestop-dfs.sh and stop-yarn.sh
-
测试hdfs
hdfs dfs -mkdir /input hdfs dfs -put /usr/software/hadoop/README.txt /inputmaster:50070
-
测试MapReduce
#hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.2.jar /input /outputhadoop jar /usr/software/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input /outputhdfs dfs -cat /output/*#如果不知道能运行的主函数名称 可以使用:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar