本文共 6153 字,大约阅读时间需要 20 分钟。
进行hadoop集群环境的搭建主要包括下面几步:
要注意的是我们要先将主节点虚拟机的jdk,Hadoop等与静态IP配置好之后再将虚拟机克隆过去,这时克隆过去的虚拟机只需要修改主机名字与修改静态ip即可。
00
设置网络适配器网络设置为NAT模式通过vmnet8来与物理主机互联
修改NAT的子网配置
打开虚拟机的网络编辑器
设置子网IP要求不与物理机IP相冲突
(似乎使用本地DHCP服务器不可以,但是我这里勾选了环境搭建中是没有任何毛病的)
并设置网关IP
记住这个网关IP在windows设置VMnet8中是要求相同的。
Windows:网络——属性——更改适配器设置
属性——网络选项卡——点中Internet协议版本4(TCP/IPv4)——属性
修改如下:注意网关IP与虚拟编辑中相同:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tH31r2SD-1599549849829)(https://s1.ax1x.com/2020/09/07/wuqI5d.png)]
下面进入虚拟机正式进行静态IP设置
centos7网卡名称一般都是ens32或者ens33
进入编辑:
vim /etc/sysconfig/network-scripts/ifcfg-ens32
将文件修改为:
TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens32UUID=382bf935-361c-4c0c-ae0a-32354d11ba70DEVICE=ens32ONBOOT=yesIPADDR=192.168.145.101NETMASK=255.255.255.0GATEWAY=192.168.145.2DNS1=8.8.8.8
注意BOOTPROTO修改为static,ONBOOT修改为yes,下面的为静态IP的设置,IPADDR为静态IP,NETMASK子网掩码,GATEWAY为网关,DNS1与在Windows系统中设置的相同。
退出重启网络:
service network restart
此时ping百度,本机,Windows 的cmd ping虚拟机的静态IP是全部能够ping通的。
主要修改三个文件
hosts,hostname,network
这是主机修改,子节点修改为对应子节点的名字
vim /etc/sysconfig/network
vim /etc/hosts
要包含所有的子节点的名字与对应的要设置的IP
vim /etc/hostname
使用Xshell与Xftp连接虚拟机并传入jdk压缩文件,传入文件夹(/usr/local/java),进入对应文件夹并进行编译。
tar -xvf jdk-8u231-linux-x64.tar.gz
解压之后进行环境变量的设置:
vim /etc/profile
在最后一行的后面填入:
JAVA_HOME=/usr/local/java/jdk1.8.0_231CLASSPATH=.:$JAVA_HOME/lib.tools.jarPATH=$JAVA_HOME/bin:$PATHexport JAVA_HOME CLASSPATH PATH
并编译profile文件:
source /etc/profile
java -version测试jdk是否安装成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bz57Hxkr-1599549849833)(https://s1.ax1x.com/2020/09/07/wujlMq.png)]
使用Xshell与Xftp连接虚拟机并传入Hadoop镜像文件,传入文件夹(/usr/local/hadoop),进入对应文件夹并进行编译。
tar -zxvf hadoop-2.8.5
设置环境变量
vim /etc/profile
在最后一行填入:
HADOOP_HOME=/usr/local/hadoop/hadoop-2.8.5export HADOOP_HOMEPATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATHexport PATH
编译:
source /etc/profile
下面重点是进行Hadoop配置文件的修改是比较麻烦的:
为hdfs库创建几个文件夹:
mkdir /usr/local/hadoop/tmpmkdir -p /usr/local/hadoop/hdfs/namemkdir /usr/local/hadoop/hdfs/data
进入文件夹:
cd /usr/local/hadoop/hadoop-2.8.5/etc/hadoop
修改hadoop-env.sh、yarn-env.sh、core-site.xml 、hdfs-site.xml
hadoop-env.sh
export你的jdk位置
yarn-env.sh
同样export你的jdk位置
**core-site.xml **
fs.default.name hdfs://master:9000 指定HDFS的默认名称 fs.defaultFS hdfs://master:9000 HDFS的URI hadoop.tmp.dir /usr/local/hadoop/tmp 节点上本地的hadoop临时文件夹
hdfs-site.xml
fs.default.name hdfs://master:9000 指定HDFS的默认名称 fs.defaultFS hdfs://master:9000 HDFS的URI hadoop.tmp.dir /usr/local/hadoop/tmp 节点上本地的hadoop临时文件夹
下面继续修改xml文件
将目录中的mapred-site.xml.template文件重命名为mapred-site.xml,同时继续修改mapred-site.xml
mapreduce.framework.name yarn 指定mapreduce使用yarn框架
修改yarn-site.xml文件
yarn.resourcemanager.hostname master 指定resourcemanager所在的hostname yarn.nodemanager.aux-services mapreduce_shuffle NodeManager上运行的附属服务。 需配置成mapreduce_shuffle,才可运行MapReduce程序
最后增添节点虚拟机的名字slaves
vim slaves
添加你需要的添加的节点虚拟机的名字
至此,所有的配置完成,下面进行复刻虚拟机。
使用VMware复刻虚拟机,对于复刻出来的两个节点虚拟机我们只需要修改三个文件即可,nwtwork,hostname,ifcfg-ens32
一定要注意的是在复刻虚拟机之后一定要重新生成一下mac地址,不然会和主节点一样的。
network
修改主机名
NETWORKING=yesHOSTNAME=node*
hostname
修改主机名
node*
ifcfg-ens32
修改静态IP
(根据自己的需求修改)
IPADDR = 192.168.145.102
修改完之后reboot重启即可,进行ping测试虚拟机互联,外网连通
直接粘贴代码把。。
三个虚拟机全部打开
master机:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
创建无密码公匙
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
添加进keys
ssh master
测试无密登录
node1、node2
mkdir ~/.ssh
master中导入node
scp ~/.ssh/authorized_keys root@node1:~/.ssh/authorized_keysscp ~/.ssh/authorized_keys root@node2:~/.ssh/authorized_keys
三台机器分别输入:
chmod 600 ~/.ssh/authorized_keys
用来赋予文件权限
master节点上分别输入 ssh node1 和 ssh node2 测试是否配置ssh成功
最后进行namenode的格式化,至此Hadoop环境正式搭建完成。
hdfs namenode -format
启动:
进入Hadoop的sbin目录
./start-all.sh
正式启动Hadoop!
输入jps检查进程
master
node
进行一个统计词数的测试进行测试hadoop
使用Hadoop来统计/usr/local/hadoop/hadoop-2.8.5中的LICENSE.txt词数
首先在Hadoop库中建立input文件夹:hadoop fs -mkdir /input
将文本放入库中:hadoop fs -put LICENSE.txt /input
进行词数统计:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /input /output
运行效果:
ls:
查看文件列表
格式:
hdfs dfs -ls [-R] URL
URL为要查看的文件路径
-R为可选参数,添加-R为递归地查看hdfs中地所有文件,而不添加-R则是查看本文件夹下所有的文件夹和文件列表。
mkdir
创建文件目录
格式:
hdfs dfs -mkdir [-p] URL
-P 为可选参数,添加-P则为递归地创建文件目录,如要在一个并不存在地文件目录下面创建一个子目录,那么hdfs先创建那个并不存在的目录再创建这个子目录,如hdfs dfs -mkdir -p /dir/dir1 命令则会先创建dir再创建dir1。
put
将单个源文件或者多个源文件从本地文件系统copy到目标文件系统中。也可以从标准输入中读取输入,写入目标文件系统中。
hdfs dfs -put
第一个为本地文件路径,第二个为hdfs文件路径,注意你也可以填入文件目录,hdfs会递归地将文件目录中的所有文件转移到目标文件系统中。
moveFromLocal
作用同put,put是相当于将文件复制过去,moveFromLocal则是将文件剪切过去。
hdfs dfs -moveFromLocal
get
将hdfs文件系统中的文件或者文件目录拷贝到本地
hdfs dfs -get [-ignorecrc] [-crc]
crc校验失败的文件通过-ignorecrc选项拷贝,文件和crc校验通过-crc选项拷贝。
mv
将hdfs中的文件从原路径转移到目标路径,并不能跨文件系统。
hdfs dfs -mv URL URL
rm
hdfs删除一个文件或者删除一个文件目录
hdfs dfs -rm [-r] URL
-r可选参数可以递归地删除一个文件目录。
cp
在hdfs中拷贝文件
hdfs dfs -cp URL URL
注意若是填写文件目录那么hdfs会自动递归复制文件目录过去,可选参数:-f:选项将覆盖目标如果它已经存在,-p:选项将保留文件属性(时间戳,许可权等)
cat
查看文件,并将文件内容输出到stdout输出流。
hdfs dfs -cat URL
chmod
改变文件权限,必须在root权限下使用这一命令,或者文件所属者。
hdfs dfs -chmod [-R] URL
-R为递归地对整个目录更改权限。
如:赋予文件全部权限的命令为777:
hdfs dfs -chmod 777 URL
chown
更改所属用户和用户组,如果选用-R那么就递归地对整个目录进行更改
hdfs dfs -chown [-R] URL
进入/home文件夹查看用户与用户组
如将root用户更改为auspic用户:
hdfs dfs -chown -R auspic:auspic /LICENSE.txt
appendToFile
追加一个或者多个本地文件到hdfs文件系统中,也可以从命令行读取输入
hdfs dfs -apendToFile..
注意是本地文件系统。
转载地址:http://lncki.baihongyu.com/