-
下载ssh
yum install -y openssl openssh-server
-
修改配置文件
- lsattr /etc/ssh/sshd_config 查看权限
- chattr -V -ia /etc/ssh/sshd_config 修改权限
- vim /etc/ssh/sshd_config
- 将上图的PermitRootLogin,RSAAuthentication,PubkeyAuthentication的设置打开。
-
启动ssh服务
systemctl start sshd.service
-
设置开机自动启动ssh服务
systemctl enable sshd.service
-
设置文件夹~./ssh的访问权限
-
cd ~
-
chattr -i ./.ssh
-
chmod 700 .ssh
-
chmod 600 .ssh/
-
ls -la .ssh
-
authorized_keys文件存储的是客户端的公共密钥。
-
-
确保虚拟机之间可以相互访问
- 比如在某一机器上ping另一个主机的ip:ping 10.64.26.98
-
配置虚拟机的hostname
-
vi /etc/hostname,将原内容删除,三台机器分别写入master,data1,data2,然后保存更改该并退出
-
sudo shutdown -r now重启服务器,让hostname生效
-
-
配置三台服务器的hosts
-
修改 /etc/hosts,使用命令vi /etc/hosts
-
改为如下
-
每个机器都要这样修改
-
-
配置服务器之间的ssh免密登录(生成密钥)
- 在每个服务器上都运行ssh-keygen -t rsa,一直回车即可
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lwOVHlJl-1656142093633)(C:Userswzq20AppDataRoamingTyporatypora-user-imagesimage-20220623155138093.png)]
-
实现节点间的免密访问
ssh-copy-id -i ~/.ssh/id_rsa.pub master ssh-copy-id -i ~/.ssh/id_rsa.pub data1 ssh-copy-id -i ~/.ssh/id_rsa.pub data2
-
检验配置是否成功:
- ssh data1,查看是否免密跳转到对应的data1节点(使用exit退出)
-
使主机的/usr/local文件夹支持写入
- cd /usr
- sudo chmod 777 local
-
解压分布式实验中jdk和hadoop压缩包,然后在此处打开命令行,输入以下命令,将windows本地的hadoop传到主机上:
scp .hadoop-2.7.7.tar.gz .jdk-7u80-linux-x64.tar.gz root@10.64.26.63:/usr/local
此处的10.64.26.63即是主机的ip地址
-
过程:
-
查看主机对应文件夹
ls /usr/local
-
在主机master上,将文件传给其他节点(data1,data2)
scp hadoop-2.7.7.tar.gz jdk-7u80-linux-x64.tar.gz root@data1:/usr/local
-
解压jdk和hadoop
cd /usr/local mkdir /usr/java mkdir /usr/hadoop tar -zxvf jdk-7u80-linux-x64.tar.gz -C /usr/java tar -zxvf hadoop-2.7.7.tar.gz -C /usr/hadoop/
-
配置环境变量
-
vim ~/.bashrc
-
添加以下语句(复制以下语句,然后再vim中shift+insert)
export JAVA_HOME=/usr/java/jdk1.7.0_80 export PATH=$PATH:$JAVA_HOME/bin export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
-
使⽤ source ~/.bashrc ,使其⽴即成效
-
java -version和hdfs version确定环境变量修改成功
-
-
使用cd /usr/hadoop/hadoop-2.7.7/etc/hadoop/,进入配置文件夹
-
修改hadoop-env.sh
-
使用vim hadoop-env.sh,打开文件开始编辑
-
找到export JAVA_HOME=的一行,注释掉,添加内容export JAVA_HOME=/usr/java/jdk1.7.0_80
-
-
修改core-site.xml
-
使⽤ vim core-site.xml ,打开⽂件开始编辑
-
在
之间添加内容 fs.defaultFS hdfs://master:8020 hadoop.tmp.dir file:/root/temp/hadoop
-
-
修改hdfs-site.xml
-
使⽤vim hdfs-site.xml编辑
-
在
之间添加内容 dfs.replication 2 dfs.namenode.name.dir file:/root/temp/hadoop/namenode dfs.datanode.data.dir file:/root/temp/hadoop/datanode
-
-
修改mapred-site.xml
-
使⽤ cp mapred-site.xml.template mapred-site.xml ,根据模板复制出mapred-site.xml ⽂件
-
使⽤ vim mapred-site.xml ,编辑⽂件
-
在
之间添加内容 mapreduce.framework.name yarn
-
-
修改yarn-site.xml
-
使⽤ vim yarn-site.xml ,开始编辑
-
在
之间添加内容 yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname master
-
-
修改slaves⽂件
-
使⽤ vim slaves ,开始编辑
-
删除⽂件内所有内容,然后直接添加
data1 data2
-
-
拷贝所有配置文件到data1,data2
for i in {1..2}; do scp $HADOOP_HOME/etc/hadoop/* data${i}:$HADOOP_HOME/etc/hadoop/; done
在3个节点进⾏如下操作:
# 停掉防⽕墙 service firewalld stop chkconfig firewalld off4.4.2 格式化NameNode
hdfs namenode -format
这个命令非常危险!你应当只在新建集群后执行一次,因为namenode保存的是HDFS的所有元信息,如果丢失了,整个集群中DataNode的数据都无法访问,就算它们还在磁盘上
4.4.3 启动HDFS 运⾏NameNode daemon和DataNode daemon
-
使⽤ sbin/start-dfs.sh ,启动dfs服务
-
正确启动,会有如下提⽰;并且输⼊jps也会有类似的 SecondaryNameNode, Jps, NameNode 这样的提⽰
-
dataX节点也可输⼊jps查看相应提示
-
如需关闭hdfs服务,在hadoop⽬录下使⽤ sbin/stop-dfs.sh
运⾏ResourceManager daemon和NodeManager daemon
-
使⽤ sbin/start-yarn.sh ,启动yarn服务
-
正确启动,会有如下提⽰;并且输⼊jps也有类似提示
-
如需关闭,使用 sbin/stop-yarn.sh
-
使用xftp将 将测试⽂件 tale.txt 和 war_peace.txt 上传到服务器上
-
将测试⽂件 tale.txt 和 war_peace.txt 上传到hdfs
hadoop fs -copyFromLocal tale.txt / hadoop fs -copyFromLocal war_peace.txt / # 查看 hadoop fs -ls /
-
在hdfs上创建⽬录并移动文件
- 当hdfs和yarn服务成功开启后,便可以执行mapreduce程序
- 常规的指令为 hadoop jar jarFile [mainClass] args
- 如果自己编写了Java开发的MapReduce版wordcount程序,需要将其打包成jar 包,然后使⽤上述指令执行
-
利⽤mapredice-wordcount对tale.txt进⾏单词统计
-
先进进入mapreduce文件夹
# 进⼊mapreduce ⽰例程序⽂件夹 cd $HADOOP_HOME/share/hadoop/mapreduce
-
执行
hadoop jar hadoop-mapreduce-examples-2.7.7.jar wordcount /small/tale.txt /wordcount/output
-
-
查看结果
使⽤ hadoop fs -ls -R / ,查看wordcount执⾏完成后hdfs的状态
- 把wordcount输出⽂件从hdfs拷⻉到本地
# 切换⾄~⽬录 cd # 查看当前~⽬录状态 ll # 将wordcount输出⽬录/wordcount/output拷⻉到本机~⽬录 hadoop fs -copyToLocal /wordcount/output # 查看拷⻉后~⽬录状态 ll # 切换⾄output⽬录 cd output/ # 查看output⽬录状态 ll
4. 查看输出文件
less part-r-00000



