Hadoop 学习_ 伪分布式安装

这里写图片描述
https://www.cnblogs.com/thousfeet/p/8618696.html hadoop搭建直接看这个,下面是一些补充。

1.环境搭建:

1.1centos选择:
最好选择minimal版本,比较小这样在个人电脑上比较不费内存。我选择的是centos6.8 minimal,下次安装直接百度一下,具体的参考内存分配如下:
在这里插入图片描述
在这里插入图片描述
安装完成后需要先配置NAT,先去路由器配置和本机(见2),具体的图形界面换成命令行即可。最后安装一些必备的软件,可参考:https://blog.csdn.net/guoxuce/article/details/71173119

  1. 2域名解析简单理解:
    在这里插入图片描述
      主机访问网站的时候先去本机的hosts寻找对应目标的IP地址,找到后直接去请求对应的服务器,否则再去域名解析服务器寻找。所以,如果把www.bai.com 192.168.2.100 这样写到hosts文件中,则一直上不了网。
      所以,我在windows的cmd下ping我的虚拟机,如果直接ping虚拟机的名字是ping不同的,因为我windows下的hosts没有写入这个地址的映射,DNS域名解析器上也没有这个地址,所以无法ping通。在这里插入图片描述
      现在去windows下添加对应的域名解析就可以直接在cmd下ping通。在这里插入图片描述
      在这里插入图片描述
      同样的道理,我要建立hadoop集群,为了方便访问,我连接机器都使用主机名方便访问,同时要在各个虚拟机的hosts中加上各个虚拟机的主机名和对应的IP。方法如下:
      a.修改主机名方便集群间的访问(后面克隆机默认的主机名是01,且hadoop配置文件也是01,记得改)
         sudo vi /etc/sysconfig/network    #假设我给它起名字叫hadoop01 ,则输入
          NETWORKING=yes
          HOSTNAME=hadoop01
     #改好后需要重启。若不想重启可以输入 sudo hostname hadoop01 然后exit登出,重新登录终端,就可以看到已经生效了。 
      b.修改域名解析映射文件使得后续可以直接通过主机名访问,sudo vi /etc/hosts,添加一行 IP地址 主机名
        192.168.2.220 hadoop01
      虚拟机各种连接方式的简介:
      在这里插入图片描述
      桥接模式就是vmnetx作为网关,连接各个虚拟机和个人工作电脑,全部都通过vmnetx网关发送到机器的物理网关,然后和外网进行交互。桥接模式和NAT模式后面好好看下区别,一般都用NAT模式。
      HOST-only:vmnet1网关连接本机和其他虚拟机组成一个局域网,但是不能连接外网。

2. 下面是物理机和虚拟机连接设置:

2.1 首先是虚拟网关设置(不论是centos还是ubuntu,根据自己需求设定):
这里写图片描述
2.2 然后是虚拟机的IP设置(centos记得在开启页面设置为NAT模式):
这里写图片描述
2.3 最后是电脑上的虚拟网卡设置(VMnet8)(不论是centos还是ubuntu):
这里写图片描述
  这个相当于给物理机分配一个IP,以实现和虚拟机通信。
命令行:
  sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
在这里插入图片描述
2.4 检查配置是否正确(即物理机是否能ping通 虚拟机):
这里写图片描述
  在实际使用的过程中,实际只需要让虚拟机的IP和VM分配给物理机的虚拟网卡在同一网段即可。(第一次在配置过程中,配置过程参数和图一样,但是不小心把IP第二个字段都写成 169,但还是成功了,最主要就是这两个)。

3. 在centos上配置Hadoop相关

3.1 通过secureCRT 远程登录 虚拟机:
这里写图片描述
3. 2 设置ubuntu默认启动为 多模式启动:
  因为图形界面比较消耗资源,所以设置为多模式。在这过程中 用普通用户模型进行修改较好,这样防止自己忘了切换,导致后续的修改是在root上进行的。但是为了取得root的权限,在前面加上: sudo 指令。这样使用root权限执行后自动回到一般用户模式。
Centos的设置:
https://blog.csdn.net/jewely/article/details/78067673
这是ubuntu的(好像没具体区分全模式,centos不太一样):
https://blog.csdn.net/u013760355/article/details/79106246
3.3 hadoop是一个集群,太多机器,所以要修改主机名,方便查找:

sudo vim /etc/hosts

这里写图片描述

修改后要让他生效,一种是重启机器(服务器);另一种是输入:(1)sudo hostname 你起得名字;(2) 重新连接服务器(服务器是没有重启的,相比第一种较快) 。起别名是为了可以直接使用别名登录,不用输入IP地址。因为集群很多机器,单独记IP很难。

3.4 安装具体的JDK和hadoop:
  3.4.1安装JDK:
    在hadoop中很多组件是基于java开发的,所以先安装JDK,后续的一些例子也是java开发,所以先安装java。
    在secureCRT中将本地文件传到虚拟机中的指令是: alt+p,出现一个窗口,输入:put d:\xxx\yy\ll\jdk-7u_65-i585.tar.gz //会放在当前用户家目录
    创建文件夹用来安装:
      mkdir /home/llb/app
    解压:
   tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/llb/app (解压就是这个-zxvf -C 表示解压后的目录 )
     
    将java添加到环境变量中:

        vim /etc/profile
		#在文件最后添加
		export JAVA_HOME=/home/hadoop/app/jdk-7u_65-i585
		export PATH=$PATH:$JAVA_HOME/bin
	
		#刷新配置
		source /etc/profile

3.4.2 安装hadoop2.4.1
    先上传hadoop的安装包到服务器上去/home/app/ (安装目录)
    这里写图片描述
    Bin是二进制可执行文件;sbin 系统相关执行脚本,hadoop系统的启动与停止;etc 配置文件;lib、include 本地库;share 因为是java开发的,所以有很多jar包在这里面:
这里写图片描述
    在share的3那里就有很多是hadoop的架构文件。随便进一个,如hdfs:
    这里写图片描述
    
    1是该组件的核心jar包,2是该jar包所依赖的项。
    
4.伪分布式需要修改5个配置文件:
  下面都是 /app/hadoop-2.4.1/etc/hadoop/ 下进行设置。
第一个:hadoop-env.sh

    vim hadoop-env.sh  #外部文件直接vim,不需要超级权限
		#第27行
		export JAVA_HOME=/home/llb/java/jdk1.7.0_65  //经常拿不到java的地址,给他写死。

第二个:core-site.xml

    <!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
		<property>
			<name>fs.defaultFS</name>
			<value>hdfs://weekend-1206-01:9000</value>
		</property>
 /*其中:hdfs://weekend-1206-01:9000
	Hdfs 协议名称;主节点(NameNode)地址:weekend-1206-01主机名(如老是出错就用IP):端口号 
	*/

		<!-- 指定hadoop运行时产生文件的存储目录 -->
		<property>
			<name>hadoop.tmp.dir</name>
			<value>/home/llb/app/hadoop-2.4.1/data</value>
      </property>
		//在实际使用过程中应该每个机器配一个文件存储,方便存储。但是注意这个目录是具有tmp属性的,下次启动有个问题,后面会讲。<name>hadoop.tmp.dir</name> 可以修改为data属性。

第三个:hdfs-site.xml hdfs-default.xml
  主要是运行的一些参数:这是存副本防止一台丢失导致损失,一般配三份(真实机器),这里是虚拟机配一份。

<!-- 指定HDFS副本的数量 -->
		<property>
			<name>dfs.replication</name>
			<value>1</value>
    </property>

第四个:mapred-site.xml
  没有的话:mv mapred-site.xml.template mapred-site.xml

vim mapred-site.xml
   # 指定MapReduce通过 yarn资源调度工具在集群上跑,否则只会在本地跑。
        <!—这一句产生secondname -->
        <property>
			<name>mapred.job.tracker</name>
			<value>llb:9001</value>    # 也是主机名
        </property>
 
		<!-- 指定mr运行在yarn上 -->
		<property>
			<name>mapreduce.framework.name</name>
			<value>yarn</value>
        </property>

第五个:yarn-site.xml

   <!-- 指定YARN的老大(ResourceManager)的地址 -->
		<property>
			<name>yarn.resourcemanager.hostname</name>
			<value>weekend-1206-01</value>
      </property>
      // weekend-1206-01 主机名
		<!-- reducer获取数据的方式(配置从节点) -->
      <property>
			<name>yarn.nodemanager.aux-services</name>
			<value>mapreduce_shuffle</value> 
      </property>
      // mapreduce_shuffle 表示从节点产生的中间节点怎么传给主节点(目前只有这一种,但必须写)。

注意:因为hadoop都是网络服务,端口会被Linux防火墙禁止,可以把这些端口添加到Linux中,比较麻烦;还有就是把Linux防火墙关闭,因为都是在内网操作,不与外部接触,可以关闭Centos7 查看关闭防火墙: https://blog.csdn.net/pucao_cug/article/details/71758883
  
4.1启动前将hadoop添加到环境变量

        Sudo 	vim /etc/proflie
		export JAVA_HOME=/usr/java/jdk1.7.0_65
		export HADOOP_HOME=/itcast/hadoop-2.4.1
		export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

	    source /etc/profile  //刷新配置文件

4.2 格式化namenode(是对namenode进行初始化):

hdfs namenode -format (hadoop namenode –format   //这个是老命令)

若此时出现 ./java: /lib/ld-linux.so.2: bad ELF interpreter: 是因为jDK的版本原因:
https://blog.csdn.net/w616589292/article/details/39697557 解决。若还出错,看下具体错在什么地方,一步步的去改。
  成功标志:Storage directory /home/llb/app/hadoop-2.4.1/data/dfs/name has been successfully formatted.(这个目录是我们创建的,只要成功就配置成功。)
  注意:一般情况下hadoop开启后是不容易关机的,同时,namedata和datanode目录是tmp属性,下次启动会重新生成,导致namenoda没有或者datanode没有。
  解决办法:
  删除 /home/llb/app/hadoop-2.4.1/ 目录下的data,重新格式化,然后依次启动hdfs(可能namenode或datanode有一个没启动,再一次启动hdfs就有了)和yarn(可以不启动,因为只有一台机器)。另外,存储文件都是在tmp属性的data目录下,只要一旦关机就所有配置没有了,所有存储文件也没有了。
  
4.3 下次启动直接从这里开始,上面是安装和配置
  若某些节点没有成功(总共5个进程,不包括 jps。可用jps查看当前hadoop进程),返回上几行的解决办法。

       先启动HDFS (sbin/ 下)
		start-dfs.sh
		
		再启动YARN(sbin/)
		start-yarn.sh
		( start-all.sh 表示启动全部,初学者千万不要启动这个,这样学的不好。 .cmd表示windows环境)
		
		验证是否启动成功(使用jps命令验证):
		
		27408 NameNode
		28218 Jps
		27643 SecondaryNameNode
		28066 NodeManager
		27803 ResourceManager  //28066,27803这两个是启动yarn后得到的
		27512 DataNode

4.4 杂谈:
http://192.168.2.103:50070 (HDFS管理界面,可以查看服务器上的节点信息,还可以直接在上面下载文件)
这里写图片描述
  红色里面的显示服务器上hdfs上的文件,可以直接下载。
示列: 在centos界面 :
 hadoop fs –put 文件 hdfs://192.168.2.103:9000/
  (就配置时写的hdfs配置的文件端口号,这样hadoop上就有了)
这里写图片描述
  从上面取到本地机器:
  1)直接用浏览器;
  2)hadoop fs –get hdfs://192.168.2.103:9000/文件 目录
  
  里面有一个例子程序(hadoop-mapreduce-examples-2.4.1.jar),可以统计单词,和计算圆周率,我们用这个做一下。
统计词:(centos)
  1.创建目录,上传文件的前缀: hadoop fs –指令
     Hadoop fs –mkdir /wordcount  //fs表示是在hdfs服务器上,/表示hdfs上的根目录,这里直接创建一个目录。
Hadoop fs –mkdir /wordcount/input
  2.Hadoop fs –put wordcount.txt /wordcount/input  //将文件wordcount.txt上传指定目录
  3.执行MapReduce指令: Hadoop jar 指令jar包 参数
例如:
 hadoop jar hadoop-mapreduce-examples-2.4.1.jar wordcount(给指定程序指明哪个类) /wordcount/input(输入数据目录) /wordcount/output(输出数据目录,可自动创建)
  查看结果:
    1) 去浏览器 ;
    2)指令:hadoop fs – 其实hadoop指令和centos的差不多。
这里写图片描述

下面是hdfs的一些原理:
这里写图片描述
  我们在访问hdfs时,相当于客户端,每台DataNode机器本身是用Linux程序运行的,他本身是EXT3文件系统,上面也装了hadoop,用户存入数据后,hdfs将文件切成小块,放了一块在这个datanode中,目录就是图片中hadoop中的目录(这个目录是装hadoop时配置的)。注意:我们在客服端指定的目录和浏览器访问的目录是虚拟的一个目录,方便用户访问,实际是存在很多台机器上,由namenode进行映射查找。
这里写图片描述
  用户存入数据后:hdfs自动将文件切成小块,并放入各个机器中(按机器容量自动分配),并会在namenode中存储那一块放到那个机器中,并在每个机器中随机备份每一小块。
  用户进行读取时:先去虚拟目录读取,hdfs后台是这样操作的:先访问namenode,查找文件在哪些机器中存储,进而去对应的机器读取文件。当多个用户提取同一个文件时,可以从备份机器中提取,这也是机器提取比较快的地方,可以提高吞吐量。
这里写图片描述
这里写图片描述
-表示是文件,d表示目录,1表示文件备份数为1.目录是没有备份的。

4.配置ssh免登陆(只有一台也要配置给自己,不然要不断输密码):
  在启动机器中启动一台就要输密码,这里是伪分布式所以只输一次,若启动多台,则要输很多次,不现实,可以设置免密登录)。没有图形界面内存512M就够了。
   #生成ssh免登陆密钥,进入到我的home目录

	ssh-keygen -t rsa (四个回车,不用输密码等,四个回车解决)

执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥),以及.ssh目录,存储上面的秘钥,后面的授权文件也放这里面。
   这里写图片描述

//将公钥拷贝到要免登陆的机器上
   cd ~/.ssh
	Scp id_rsa.pub 主机名(或192.168.2.100):/home/llb/

注意用别名时,本台机器中要配置 免密登陆机器的IP和别名设置,免密登录中也要设置本台机器和别名,否则用绝对的IP地址。
  把公钥拷贝给自己,自己就可以免登陆自己。不论是给自己还是别人,创建一个authorized_keys(授权文本,文件名不能改,指令: touch authorized_keys),在 /home/llb/.ssh/ 下, 文件的权限必须是600. 指令: chmod 600 authorized_keys .
  自己授权自己:cat id_rsa.pub >> ./authorized_keys #这个公钥是自己机器的。
  如果要免密码登陆别的机器,就需要将自己的公钥拷贝给对应机器直接使用:
  这个使用追加的方式拷贝到文件中:
   cat …/id_rsa.pub >> ./authorized_keys
   注意这个秘钥是别的机器的,即a步别的机器拷贝过来的。
测试 (在secureCRT):
   ssh itcast01(或者绝对IP)
   
Ssh客户端的内部原理:

这里写图片描述
   黑色的箭头是需要我们第一次授权需要做的,绿色是ssh客户端内部的实现原理。

下面是克隆几台机器做3个节点:
1.克隆和网络:
克隆机器记得是创建完整克隆即可,克隆后要去克隆机器的网卡修改信息
     a.  vim /etc/sysconfig/network-scripts/ifcfg-eth0
在这里插入图片描述
```
b、清空70-persistent-net.rules 中信息
> /etc/udev/rules.d/70-persistent-net.rules

			c、重启
			Reboot
			重新启动后系统网络正常
			```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分布式安装是在单台机器上模拟分布式安装方式,适用于学习和测试Hadoop的初学者。以下是分布式安装的步骤: 1. 首先,需要下载Hadoop安装包,并解压到本地的某个目录中。 2. 修改Hadoop的配置文件,主要包括以下几个文件: - core-site.xml:配置Hadoop的核心参数,如HDFS的名称节点地址、RPC端口等。 - hdfs-site.xml:配置HDFS的相关参数,如数据块大小、副本数量等。 - mapred-site.xml:配置MapReduce的相关参数,如JobTracker地址、TaskTracker数量等。 - yarn-site.xml:配置YARN的相关参数,如NodeManager地址、ResourceManager地址等。 3. 接着,需要创建Hadoop的数据目录和日志目录,并修改它们的权限: - mkdir -p /home/hadoop/data/hdfs/namenode - mkdir -p /home/hadoop/data/hdfs/datanode - mkdir -p /home/hadoop/logs/hdfs - chmod -R 777 /home/hadoop/data /home/hadoop/logs 4. 启动Hadoop的服务: - 启动HDFS:hadoop namenode -format && start-all.sh - 启动YARN:start-yarn.sh 5. 确认Hadoop的服务已经启动成功: - 使用jps命令查看Hadoop的进程:jps - 访问Hadoop的Web界面:http://localhost:50070/(HDFS)、http://localhost:8088/(YARN) 以上就是Hadoop分布式安装的步骤。需要注意的是,分布式安装只是为了模拟分布式环境,不能支持真正的分布式计算。如果需要在多台机器上运行Hadoop集群,需要进行完整的分布式安装

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值