当前位置:首页 » 云服务器 » 服务器hadoop怎么搭建

服务器hadoop怎么搭建

发布时间: 2022-10-02 00:44:44

❶ 安装hadoop的步骤有哪些

hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFSHA、YARN等。最新的hadoop-2.4.1又增加了YARNHA

注意:apache提供的hadoop-2.4.1的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,
所以如果在64位的操作上安装hadoop-2.4.1就需要重新在64操作系统上重新编译
(建议第一次安装用32位的系统,我将编译好的64位的也上传到群共享里了,如果有兴趣的可以自己编译一下)

前期准备就不详细说了,课堂上都介绍了
1.修改linux主机名
2.修改IP
3.修改主机名和IP的映射关系
######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机、阿里云主机等)
/etc/hosts里面要配置的是内网IP地址和主机名的映射关系
4.关闭防火墙
5.ssh免登陆
6.安装JDK,配置环境变量等

集群规划:
主机名 IP 安装的软件 运行的进程
HA181 192.168.1.181 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
HA182 192.168.1.182 jdk、hadoop NameNode、DFSZKFailoverController(zkfc)
HA183 192.168.1.183 jdk、hadoop ResourceManager
HA184 192.168.1.184 jdk、hadoop ResourceManager
HA185 192.168.1.185 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
HA186 192.168.1.186 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
HA187 192.168.1.187 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

说明:
1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。ActiveNameNode对外提供服务,而StandbyNameNode则不对外提供服务,仅同步activenamenode的状态,以便能够在它失败时快速进行切换。
hadoop2.0官方提供了两种HDFSHA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode
这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当ActiveNameNode挂掉了,会自动切换StandbyNameNode为standby状态
2.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调
安装步骤:
1.安装配置zooekeeper集群(在HA185上)
1.1解压
tar-zxvfzookeeper-3.4.5.tar.gz-C/app/
1.2修改配置
cd/app/zookeeper-3.4.5/conf/
cpzoo_sample.cfgzoo.cfg
vimzoo.cfg
修改:dataDir=/app/zookeeper-3.4.5/tmp
在最后添加:
server.1=HA185:2888:3888
server.2=HA186:2888:3888
server.3=HA187:2888:3888
保存退出
然后创建一个tmp文件夹
mkdir/app/zookeeper-3.4.5/tmp
再创建一个空文件
touch/app/zookeeper-3.4.5/tmp/myid
最后向该文件写入ID
echo1>/app/zookeeper-3.4.5/tmp/myid
1.3将配置好的zookeeper拷贝到其他节点(首先分别在HA186、HA187根目录下创建一个weekend目录:mkdir/weekend)
scp-r/app/zookeeper-3.4.5/HA186:/app/
scp-r/app/zookeeper-3.4.5/HA187:/app/

注意:修改HA186、HA187对应/weekend/zookeeper-3.4.5/tmp/myid内容
HA186:
echo2>/app/zookeeper-3.4.5/tmp/myid
HA187:
echo3>/app/zookeeper-3.4.5/tmp/myid

2.安装配置hadoop集群(在HA181上操作)
2.1解压
tar-zxvfhadoop-2.4.1.tar.gz-C/weekend/
2.2配置HDFS(hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目录下)
#将hadoop添加到环境变量中
vim/etc/profile
exportjava_HOME=/app/jdk1.7.0_79
exportHADOOP_HOME=/app/hadoop-2.4.1
exportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

#hadoop2.0的配置文件全部在$HADOOP_HOME/etc/hadoop下
cd/home/hadoop/app/hadoop-2.4.1/etc/hadoop

2.2.1修改hadoop-env.sh
exportJAVA_HOME=/app/jdk1.7.0_79

2.2.2修改core-site.xml
<configuration>
<!--指定hdfs的nameservice为ns1-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1/</value>
</property>
<!--指定hadoop临时目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop-2.4.1/tmp</value>
</property>

<!--指定zookeeper地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>HA185:2181,HA186:2181,HA187:2181</value>
</property>
</configuration>

2.2.3修改hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致-->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!--ns1下面有两个NameNode,分别是nn1,nn2-->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!--nn1的RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>HA181:9000</value>
</property>
<!--nn1的http通信地址-->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>HA181:50070</value>
</property>
<!--nn2的RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>HA182:9000</value>
</property>
<!--nn2的http通信地址-->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>HA182:50070</value>
</property>
<!--指定NameNode的元数据在JournalNode上的存放位置-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://HA185:8485;HA186:8485;HA187:8485/ns1</value>
</property>
<!--指定JournalNode在本地磁盘存放数据的位置-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/app/hadoop-2.4.1/journaldata</value>
</property>
<!--开启NameNode失败自动切换-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!--配置失败自动切换实现方式-->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.</value>
</property>
<!--配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!--使用sshfence隔离机制时需要ssh免登陆-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!--配置sshfence隔离机制超时时间-->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

2.2.4修改mapred-site.xml
<configuration>
<!--指定mr框架为yarn方式-->
<property>
<name>maprece.framework.name</name>
<value>yarn</value>
</property>
</configuration>

2.2.5修改yarn-site.xml
<configuration>
<!--开启RM高可用-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--指定RM的clusterid-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!--指定RM的名字-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!--分别指定RM的地址-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>HA183</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>HA184</value>
</property>
<!--指定zk集群地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>HA185:2181,HA186:2181,HA187:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>maprece_shuffle</value>
</property>
</configuration>


2.2.6修改slaves(slaves是指定子节点的位置,因为要在HA181上启动HDFS、在HA183启动yarn,
所以HA181上的slaves文件指定的是datanode的位置,HA183上的slaves文件指定的是nodemanager的位置)
HA185
HA186
HA187

2.2.7配置免密码登陆
#首先要配置HA181到HA182、HA183、HA184、HA185、HA186、HA187的免密码登陆
#在HA181上生产一对钥匙
ssh-keygen-trsa
#将公钥拷贝到其他节点,包括自己
ssh--idHA181
ssh--idHA182
ssh--idHA183
ssh--idHA184
ssh--idHA185
ssh--idHA186
ssh--idHA187
#配置HA183到HA184、HA185、HA186、HA187的免密码登陆
#在HA183上生产一对钥匙
ssh-keygen-trsa
#将公钥拷贝到其他节点
ssh--idHA184
ssh--idHA185
ssh--idHA186
ssh--idHA187
#注意:两个namenode之间要配置ssh免密码登陆,别忘了配置HA182到HA181的免登陆
在HA182上生产一对钥匙
ssh-keygen-trsa
ssh--id-iHA181

2.4将配置好的hadoop拷贝到其他节点
scp-r/app/hadoop-2.5.1/HA182:/app/
scp-r/app/hadoop-2.5.1/HA183:/app/
scp-r/app/hadoop-2.5.1/HA184:/app/
scp-r/app/hadoop-2.5.1/HA185:/app/
scp-r/app/hadoop-2.5.1/HA186:/app/
scp-r/app/hadoop-2.5.1/HA187:/app/
###注意:严格按照下面的步骤
2.5启动zookeeper集群(分别在HA185、HA186、tcast07上启动zk)
cd/app/zookeeper-3.4.5/bin/
./zkServer.shstart
#查看状态:一个leader,两个follower
./zkServer.shstatus

2.6启动journalnode(分别在在HA185、HA186、HA187上执行)
cd/app/hadoop-2.5.1
hadoop-daemon.shstartjournalnode
#运行jps命令检验,HA185、HA186、HA187上多了JournalNode进程
2.7格式化ZKFC(在HA181上执行即可) hdfszkfc-formatZK
2.8格式化HDFS
#在HA181上执行命令:
hdfsnamenode-format
#格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/app/hadoop-2.4.1/tmp,然后将/weekend/hadoop-2.4.1/tmp拷贝到HA182的/weekend/hadoop-2.4.1/下。
scp-rtmp/HA182:/app/hadoop-2.5.1/
##也可以这样,建议hdfsnamenode-bootstrapStandby



2.9启动HDFS(在HA181上执行)
sbin/start-dfs.sh

2.10启动YARN(#####注意#####:是在HA183上执行start-yarn.sh,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动)
sbin/start-yarn.sh


到此,hadoop-2.4.1配置完毕,可以统计浏览器访问:
http://192.168.1.181:50070
NameNode'HA181:9000'(active)
http://192.168.1.182:50070
NameNode'HA182:9000'(standby)

验证HDFSHA
首先向hdfs上传一个文件
hadoopfs-put/etc/profile/profile
hadoopfs-ls/
然后再kill掉active的NameNode
kill-9<pidofNN>
通过浏览器访问:http://192.168.1.182:50070
NameNode'HA182:9000'(active)
这个时候HA182上的NameNode变成了active
在执行命令:
hadoopfs-ls/
-rw-r--r--3rootsupergroup19262014-02-0615:36/profile
刚才上传的文件依然存在!!!
手动启动那个挂掉的NameNode
sbin/hadoop-daemon.shstartnamenode
通过浏览器访问:http://192.168.1.181:50070
NameNode'HA181:9000'(standby)

验证YARN:
运行一下hadoop提供的demo中的WordCount程序:
hadoopjarshare/hadoop/maprece/hadoop-maprece-examples-2.4.1.jarwordcount/profile/out

OK,大功告成!!!
CID-74d21742-3e4b-4df6-a99c-d52f703b49c0



测试集群工作状态的一些指令:
bin/hdfsdfsadmin-report 查看hdfs的各节点状态信息


bin/hdfshaadmin-getServiceStatenn1 获取一个namenode节点的HA状态

sbin/hadoop-daemon.shstartnamenode单独启动一个namenode进程


./hadoop-daemon.shstartzkfc单独启动一个zkfc进程

❷ 如何配置Hadoop环境

资源下载

1、JDK下载:下载链接
2、hadoop:下载链接
3、下载完成后验证一下下载,将计算的MD5值与官网的进行对比已验证安装包的准确性:

md5sum ./hadoop-2.6.*.tar.gz | tr "a-z" "A-Z" # 计算md5值,并转化为大写,方便比较1

一、创建Hadoop用户

创建hadoop用户,并分配以用户名为家目录/home/hadoop,并将其加入到sudo用户组,创建好用户之后,以hadoop用户登录:

sudo useradd -m hadoop -s /bin/bash sudo adser hadoop sudo
sudo passwd hadoop # 设置hadoop用户密码123

二、安装JDK、Hadoop及配置环境变量

安装,解压JDK到/usr/lib/java/路径下,Hadoop到/usr/local/etc/hadoop/路径下:

tar zxf ./hadoop-2.6.*.tar.gz
mv ./hadoop-2.6.* /usr/local/etc/hadoop # 将 /usr/local/etc/hadoop作为Hadoop的安装路径12

解压完成之后,可验证hadoop的可用性:

cd /usr/local/etc/hadoop
./bin/hadoop version # 查看hadoop的版本信息12

若在此处,会出现类似以下的错误信息,则很有可能是该安装包有问题。

Error: Could not find or load main class org.apache.hadoop.util.VersionInfo1

配置环境,编辑“/etc/profile”文件,在其后添加如下信息:

export HADOOP_HOME=/usr/local/etc/hadoopexport JAVA_HOME=/usr/lib/java/jdk1.8.0_45export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin12345

使配置的变量生效:

source /etc/profile1

三、测试一下

在此我们可以运行一个简单的官方Demo:

cd `echo $HADOOP_HOME` # 到hadoop安装路径
mkdir ./input
cp ./etc/hadoop/*.xml ./input
hadoop jar ./share/hadoop/maprece/hadoop-maprece-examples-*.jar grep ./input ./output 'dfs[a-z.]+'1234

输出的结果应该会是:

1 dfsadmin 1

  • 这里有一点需要注意,该Example程序运行时不能已存在output目录,否则或将无法执行!

  • 四、Hadoop的伪分布式环境搭建

    什么是伪分布式?Hadoop 伪分布式模式是在一台机器上模拟Hadoop分布式,单机上的分布式并不是真正的分布式,而是使用线程模拟的分布式。分布式和伪分布式这两种配置也很相似,唯一不同的地方是伪分布式是在一台机器上配置,也就是名字节点(namenode)和数据节点(datanode)均是同一台机器。

    需要配置的文件有core-site.xml和hdfs-site.xml这两个文件他们都位于${HADOOP_HOME}/etc/hadoop/文件夹下。
    其中core-site.xml:

  • 1 <?xml version="1.0" encoding="UTF-8"?>

  • 2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

  • 3 <!--

  • 4 Licensed ...

  • -->

  • 18

  • 19 <configuration>

  • 20 <property>

  • 21 <name>hadoop.tmp.dir</name>

  • 22 <value>file:/home/hadoop/tmp</value>

  • 23 <description>Abase for other temporary directories.</description>

  • 24 </property>

  • 25 <property>

  • 26 <name>fs.default.name</name>

  • 27 <value>hdfs://master:9000</value>

  • 28 </property>

  • 29 </configuration> 1234567891011121314151617

  • 文件hdfs-site.xml的配置如下:

  • 1 <?xml version="1.0" encoding="UTF-8"?>

  • 2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

  • 3 <!--

  • 4 Licensed ...

  • -->

  • 18

  • 19 <configuration>

  • 20 <property>

  • 21 <name>dfs.replication</name>

  • 22 <value>1</value>

  • 23 </property>

  • 24 <property>

  • 25 <name>dfs.namenode.name.dir</name>

  • 26 <value>file:/home/hadoop/tmp/dfs/name</value>

  • 27 </property>

  • 28 <property>

  • 29 <name>dfs.datanode.data.dir</name>

  • 30 <value>file:/home/hadoop/tmp/dfs/data</value>

  • 31 </property>

  • 32 </configuration>

  • 配置完成后,执行格式化命令,使HDFS将制定的目录进行格式化:

  • hdfs namenode -format1

  • 若格式化成功,在临近输出的结尾部分可看到如下信息:

    如果发现并没有出现如上信息,则使用刷新节点命令进行刷新:

  • hdfs dfsadmin -refreshNodes1

  • 八、HDFS集群实例测试

    依然是之前的那个示例,首先,创建一个数据源文件夹,并添加数据:

  • hdfs dfs -mkdir /input

  • hdfs dfs -put /usr/local/etc/hadoop/etc/hadoop/*.xml /input12

  • 运行maprece示例:

  • hadoop jar /usr/local/etc/hadoop/share/hadoop/maprece/hadoop-maprece-examples-*.jar grep /input /output 'dfs[a-z.]+'1

  • holding…

❸ 搭建一个hadoop2.x需要准备哪些软件

工具/原料

linux系统(本篇使用的是CentOS v6.5)
Hadoop安装包(本篇使用的是hadoop v2.6.0)
环境要求

1
需要安装JDK6.0以上版本(可自行解压安装或使用自带的软件安装包,如yum)

2
需要无密码登录的SSH环境(安装ssh及sshd,具体配置步骤在后面介绍)

END
安装/配置 步骤

1
配置hosts文件,将主机名和对应IP地址映射。如图中Master、Slave1和Slave2是我们要搭建分布式环境的机器。Master为主机,Slavex为从机。

2
配置SSH的无密码登录:可新建专用用户hadoop进行操作,cd命令进入所属目录下,输入以下指令(已安装ssh)
ssh-keygen -t rsa -P ""
cat .ssh/id_rsa.pub >>.ssh/authorized_keys
解释一下,第一条生成ssh密码的命令,-t 参数表示生成算法,有rsa和dsa两种;-P表示使用的密码,这里使用“”空字符串表示无密码。
第二条命令将生成的密钥写入authorized_keys文件。
这时输入 ssh localhost,弹出写入提示后回车,便可无密码登录本机。同理,将authorized_keys文件 通过 scp命令拷贝到其它主机相同目录下,则可无密码登录其它机器。

3
安装hadoop:安装方式很简单,下载安装包到所属目录下,使用
tar -zxvf 安装包名
进行解压,解压完毕可通过mv 命令重命名文件夹,安装至此完成。解压后的目录内容如图所示。

4
hadoop配置过程:要实现分布式环境,配置过程是最为重要的,
这里要涉及到的配置文件有7个:
~/hadoop/etc/hadoop/hadoop-env.sh
~/hadoop/etc/hadoop/yarn-env.sh
~/hadoop/etc/hadoop/slaves
~/hadoop/etc/hadoop/core-site.xml
~/hadoop/etc/hadoop/hdfs-site.xml
~/hadoop/etc/hadoop/mapred-site.xml
~/hadoop/etc/hadoop/yarn-site.xml
之后会分别介绍各个配置的的作用和配置关键

5
配置文件1:hadoop-env.sh
该文件是hadoop运行基本环境的配置,需要修改的为java虚拟机的位置。
故在该文件中修改JAVA_HOME值为本机安装位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)

6
配置文件2:yarn-env.sh
该文件是yarn框架运行环境的配置,同样需要修改java虚拟机的位置。
在该文件中修改JAVA_HOME值为本机安装位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)

7
配置文件3:slaves
该文件里面保存所有slave节点的信息,以本篇为例
写入以下内容(hosts里从机的主机名):
Slave1
Slave2

8
配置文件4:core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop-${user.name}</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://Master:9000</value>
</property>
</configuration>
这个是hadoop的核心配置文件,这里需要配置的就这两个属性,fs.default.name配置了hadoop的HDFS系统的命名,位置为主机的9000端口;hadoop.tmp.dir配置了hadoop的tmp目录的根位置。这里使用了一个文件系统中没有的位置,所以要先用mkdir命令新建一下。

9
配置文件5:hdfs-site.xml
<configuration>
<property>
<name>dfs.http.address</name>
<value>Master:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name><value>Master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
这个是hdfs的配置文件,dfs.http.address配置了hdfs的http的访问位置;dfs.replication配置了文件块的副本数,一般不大于从机的个数。

10
配置文件6:mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>Master:9001</value>
</property>
<property>
<name>mapred.map.tasks</name>
<value>20</value>
</property>
<property>
<name>mapred.rece.tasks</name>
<value>4</value>
</property>
<property>
<name>maprece.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>maprece.jobhistory.address</name><value>Master:10020</value>
</property>
<property><name>maprece.jobhistory.webapp.address</name><value>Master:19888</value>
</property>
</configuration>

这个是maprece任务的配置,由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在maprece.framework.name属性下配置为yarn。mapred.map.tasks和mapred.rece.tasks分别为map和rece的任务数,至于什么是map和rece,可参考其它资料进行了解。
其它属性为一些进程的端口配置,均配在主机下。

11
配置文件7:yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>Master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheler.address</name>
<value>Master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master:8088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name><value>Master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name><value>Master:8033</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name><value>maprece_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.maprece.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property>
</configuration>
该文件为yarn框架的配置,主要是一些任务的启动位置

12
将配置好的hadoop复制到其他节点
scp –r ~/hadoop hadoop@Slave1:~/
scp –r ~/hadoop hadoop@Slave2:~/
END
启动验证

格式化namenode:
./bin/hdfs namenode -format
若出现如图所示提示,则格式化成功

启动hdfs: ./sbin/start-dfs.sh
此时在Master上面运行的进程有:namenode secondarynamenode
Slave1和Slave2上面运行的进程有:datanode
启动yarn: ./sbin/start-yarn.sh
此时在Master上面运行的进程有:namenode secondarynamenode resourcemanager
Slave1和Slave2上面运行的进程有:datanode nodemanager

3
检查启动结果
查看集群状态:./bin/hdfs dfsadmin –report
查看文件块组成: ./bin/hdfsfsck / -files -blocks
查看HDFS: http://192.168.101.248:50070(主机IP)
查看RM: http:// 192.168.101.248:8088(主机IP)
正确情况如图显示

❹ 如何构建最优化的Hadoop集群

操作系统
我们选择Linux作为操作系统。Linux有许多不同的发行版,包括Ubuntu、RedHat和CentOS等,无论选择哪一个都可以。基于支持和许可费用的考虑,我们最终选择了CentOS 5.7。最好是定制一个CentOS的映像,把那些需要的软件都预装进去,这样所有的机器可以包含相同的软件和工具,这是一个很好的做法。
根据Cloudera的建议,OS层应该采用以下设置:
文件系统
Ext3文件系统
取消atime
不要使用逻辑卷管理
利用alternatives来管理链接
使用配置管理系统(Yum、Permission、sudoers等)
减少内核交换
撤销一般用户访问这些云计算机的权限
不要使用虚拟化
至少需要以下Linux命令:
/etc/alternatives
ln、chmod、chown、chgrp、mount、umount、kill、rm、yum、mkdir
硬件要求
由于Hadoop集群中只有两种节点(Namenode/Jobtracker和Datanode/Tasktracker),因此集群内的硬件配置不要超过两种或三种。

图2 - Hadoop集群服务器角色
硬件建议:
Namenode/Jobtracker:1Gb/s以太网口x2、16GB内存、4个CPU、100GB磁盘
Datanode:1Gb/s以太网口x2、8GB内存、4个CPU、多个磁盘,总容量500GB以上
实际的硬件配置可以与我们建议的配置不同,这取决于你们需要存储和处理的数据量。但我们强烈建议不要在集群中混用不同的硬件配置,以免那些较弱的机器成为系统的瓶颈。
Hadoop的机架感知
Hadoop有一个“机架感知”特性。管理员可以手工定义每个slave数据节点的机架号。为什么要做这么麻烦的事情?有两个原因:防止数据丢失和提高网络性能。

图3 - Hadoop集群的机架感知
为了防止数据丢失,Hadoop会将每个数据块复制到多个机器上。想象一下,如果某个数据块的所有拷贝都在同一个机架的不同机器上,而这个机架刚好发生故障了(交换机坏了,或者电源掉了),这得有多悲剧?为了防止出现这种情况,必须要有一个人来记住所有数据节点在网络中的位置,并且用这些知识来确定——把数据的所有拷贝们放在哪些节点上才是最明智的。这个“人”就是Name Node。
另外还有一个假设,即相比不同机架间的机器,同一个机架的机器之间有着更大的带宽和更小的延时。这是因为,机架交换机的上行带宽一般都小于下行带宽。而且,机架内的延时一般也小于跨机架的延时(但也不绝对)。
机架感知的缺点则是,我们需要手工为每个数据节点设置机架号,还要不断地更新这些信息,保证它们是正确的。要是机架交换机们能够自动向Namenode提供本机架的数据节点列表,那就太棒了。
Hadoop软件的安装和配置
Hadoop集群有多种构建方式:
手工下载tar文件并复制到集群中
利用Yum仓库
利用Puppet等自动化部署工具
我们不建议采用手工方式,那只适合很小的集群(4节点以下),而且会带来很多维护和排障上的问题,因为所有的变更都需要用scp或ssh的方式手工应用到所有的节点上去。
从以下方面来看,利用Puppet等部署工具是最佳的选择:
安装
配置
维护
扩展性
监控
排障
Puppet是Unix/Linux下的一个自动化管理引擎,它能基于一个集中式的配置执行增加用户、安装软件包、更新服务器配置等管理任务。我们将主要讲解如何利用Yum和Puppet来安装Hadoop。
利用Yum/Puppet搭建Hadoop集群
要利用Puppet搭建Hadoop集群,首先要符合以下前置条件:
包含所有必需Hadoop软件的中央仓库
用于Hadoop部署的Puppet装载单(manifest)
用于Hadoop配置管理的Puppet装载单
用于集群维护的框架(主要是sh或ksh脚本),以支持集群的start/stop/restart
利用puppet构建整个服务器(包括操作系统和其它软件)
注:如果要用Yum来安装Hadoop集群,则所有服务器应该预先构建完成,包括操作系统和其它软件都应安装完毕,yum仓库也应在所有节点上设置完毕。
构建Datanode/Tasktracker
如果用Yum安装Datanode/Tasktracker,需在所有数据节点上执行以下命令:

yum install hadoop-0.20-datanode –y
yum install hadoop-0.20-tasktracker –y

换成Puppet的话,则是:

class setup_datanode {
if ($is_datanode == true) {
make_dfs_data_dir { $hadoop_disks: }
make_mapred_local_dir { $hadoop_disks: }
fix_hadoop_parent_dir_perm { $hadoop_disks: }
}
# fix hadoop parent dir permissions
define fix_hadoop_parent_dir_perm() {

}
# make dfs data dir
define make_dfs_data_dir() {

}
# make mapred local and system dir
define make_mapred_local_dir() {

}
} # setup_datanode

构建Namenode(及辅助Namenode)
如果用Yum安装Namenode,需在所有数据节点上执行以下命令:

yum install hadoop-0.20-namenode –y
yum install hadoop-0.20-secondarynamenode –y

换成Puppet的话,则是:

class setup_namenode {
if ($is_namenode == true or $is_standby_namenode == true) {
...
}
exec {"namenode-dfs-perm":
...
}
exec { "make ${nfs_namenode_dir}/dfs/name":
...
}
exec { "chgrp ${nfs_namenode_dir}/dfs/name":
...
}
if ($standby_namenode_host != "") {
...
}
exec { "own $nfs_standby_namenode_dir":
...
}
}
# /standby_namenode_hadoop
if ($standby_namenode_host != "") {
...
}
exec { "own $standby_namenode_hadoop_dir":
...
}
}
}
}
class setup_secondary_namenode {
if ($is_secondarynamenode == true) {
...
}
....
}
exec {"namenode-dfs-perm":
...
}
}
}

构建JobTracker
如果用Yum安装Jobtracker,需在所有数据节点上执行以下命令:

yum install hadoop-0.20-jobtracker –y

换成Puppet的话,则是使用与构建Namenode相同的装载单,唯一的区别在于,在Jobtracker机器上,会启动Jobtracker——即将该机器上的is_jobtracker设置为true。

❺ 如何在浪潮服务器上部署hadoop

据国外媒体消息,为应对海量数据浪潮,VMware启动Serengeti开放原始码计划,便于企业在VMware vSphere虚拟化平台上快速部署与管理Apache Hadoop集群,部署虚拟化技术与分布式计算混用的基础架构。
通过Serengeti计划,VMware开放一组工具组,可在Apache 2.0网页免费下载,让企业IT人员利用指令接口(Command Line Interface,CLI)在vSphere平台建立、设定、启用与管理Hadoop集群,包括Hadoop共通组件如Apache Pig与Apache Hive等。例如,IT人员可用这些工具组设定单台虚拟计算节配置多少内存、存储与网络资源。目前VMware已和Cloudera、Greenplum、Hortonworks、IBM及MapR等Hadoop厂商合作推广Serengeti计划。
此外,VMware还为Hadoop放出新的原始码,包括HDFS(Hadoop Distributed File System)和Hadoop MapRece项目的扩展组件,可在虚拟化平台当中,将数据和计算任务分散到不同虚拟计算节点。并且VMware发布了Spring for Apache Hadoop分布式计算开发平台的更新版本,让企业开发人员整合HBase数据库、Cascading函数库及Hadoop安全功能,来开发采Hadoop技术的应用系统。

❻ Linux服务器上搭建hadoop

用不同的账号,当然可以。
我用相同的账号,搭建了两套环境,只要安装hadoop的目录不再同一个目录下就可以。然后就是注意你的/etc/profile尽量不要配置HADOOP_HOME的值,只配置JDK就可以了,不然可能会用冲突,不知道该去找哪个hadoop home 了。

❼ 怎样在linux系统上搭建Hadoop集群

(1)下载jdk,在官网下载,下载rpm的包
(2)hadoop包的下载,官网上下载
download hadoop->release->mirror site(镜像站)->随便选择离自己近的(HTTP下的第一个)->选择2.7.2->下载.tar.gz
(3)将两个包远程传输到linux虚拟机中
(4)将主机名和ip地址进行适配,让我们的ip地址和主机名(如bigdata)相匹配:写到/etc/hosts里面
vi /etc/hosts
按“i”进入插入状态 将原有的地址注释掉
在新的一行输入:ip地址 主机名(如172.17.171.42 bigdata)(注:可以双击xshell的窗口再打开一个连接窗口,可以在新的窗口查询ip地址并进行复制)
按“Esc”退出插入状态
输入:wq保存退出
修改完之后可以输入hostname回车,查看是否成功
reboot:重启,使得刚刚的修改生效
(5)将包放到opt下:cp hadoop-2.7.2.tar.gz /opt/
cp jdk-8u111-linux-x64.rpm /opt/
进入opt:cd /opt/
查看opt下的文件:ll
(6)安装jdk,配置jdk的环境变量
安装命令:rpm -ivh jdk-Bu101-linux-x64.rpm
配置环境变量:进入profile进行编辑:vi /etc/profile
并按照上面的方式在最后写入并保存:JAVA_HOME=/usr/java/default/(/usr/java/default/是jdk的安装目录)
打印JAVA_HOME检验是否配置好:echo $JAVA_HOME结果发现打印出来的没有内容因为我们对/etc/profile的修改需要通过以下命令对它生效source /etc/profile。再次输入echo $JAVA_HOME,打印结果为/usr/java/default/
(7)验证jdk安装好:java -version
(8)配置SSH(免密码登录)
回到根目录:cd 安装SSH秘钥:ssh-keygen -t rsa会自动在/root/.shh/目录下生成
查看目录:ll .ssh/有两个新生成的文件id_rsa(私钥),id_rsa.pub(公钥)
进入.ssh/:cd .ssh/
将公钥写入authorized_key中:cat id_rsa.pub >> authorized_keys
修改authorized_keys文件的权限:chmod 644 authorized_keys
修改完后退出.ssh的目录cd进入初始目录输入:ssh bigdata(bigdata为你要远程登录的主机名或者ip地址)第一次登录需要确认是否需要继续登录输入yes继续登录
退出exit
(9)安装及配置hadoop
解压:tar zxf hadoop-2.7.2.tar.gz
查看/opt目录下是否已经存在解压的文件:ll(结果为出现hadoop-2.7.2)
继续查看hadoop-2.7.2里的内容:cd hadoop-2.7.2
配置HADOOP_HOME:修改/etc/profile
进入hadoop的配置文件目录cd /opt/hadoop-2.7.2/etc/hadoop/,会用的的配置文件如下:
core-site.xml
配置hadoop的文件系统即HDFS的端口是什么。
配置项1为default.name,值为hdfs://bigdata:9000(主机名:bigdata也可也写成ip地址,端口9000习惯用)
配置项2为hadoop临时文件,其实就是配置一个目录,配置完后要去创建这个目录,否则会存在问题。
配置项3分布式文件系统的垃圾箱,值为4320表示3分钟回去清理一次

<property>
<name>fs.default.name</name>
<value>hdfs://bigdata:9000</value>
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.7.2/current/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>4320</value>
</property>
hdfs-site.xml
配置项1,namenode的细节实际上就是一个目录
配置项2,datanode的细节,真实环境中datanode的内容不需要再namenode的系统下配置,在此配置的原因是我们的系统是伪分布式系统,namenode和datanode在一台机器上
配置项3,副本的数量,在hdfs中每个块有几个副本
配置项4,HDFS是否启用web
配置项5,HDFS的用户组
配置项6,HDFS的权限,现在配置为不开启权限

<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop-2.7.2/current/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop-2.7.2/current/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>staff</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
创建配置文件中不存在的目录:mkdir -p /opt/hadoop-2.7.2/current/data
mkdir -p /opt/hadoop-2.7.2/current/dfs/name
mkdir -p /opt/hadoop-2.7.2/current/tmp
yarn-site.xml
配置项1,resourcemanager的hostname,值为你运行的那台机器的主机名或IP地址
配置项2,nodemanager相关的东西
配置项3,nodemanager相关的东西
配置项4,resourcemanager的端口,主机名+端口号(IP+端口)
配置项5,resourcemanager调度器的端口
配置项6,resourcemanager.resource-tracker,端口
配置项7,端口
配置项8,端口
配置项9,日志是否启动
配置项10,日志保留的时间长短(以秒为单位)
配置项11,日志检查的时间
配置项12,目录
配置项13,目录的前缀

<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>maprece_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.maprece.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>bigdata:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheler.address</name>
<value>bigdata:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>bigdata:18025</value>
</property> <property>
<name>yarn.resourcemanager.admin.address</name>
<value>bigdata:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>bigdata:18088</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir-suffix</name>
<value>logs</value>
</property>
mapred-site.xml
没有mapred-site.xml,输入vi mapred-按“TAB”发现有mapred-site.xml.template,对该文件进行复制
cp mapred-site.xml.template mapred-site.xml 配置项1,maprece的框架
配置项2,maprece的通信端口
配置项3,maprece的作业历史记录端口
配置项4,maprece的作业历史记录端口
配置项5,maprece的作业历史记录已完成的日志目录,在hdfs上
配置项6,maprece中间完成情况日志目录
配置项7,maprece的ubertask是否开启

<property>
<name>maprece.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>maprece.jobtracker.http.address</name>
<value>bigdata:50030</value>
</property>
<property>
<name>maprece.jobhisotry.address</name>
<value>bigdata:10020</value>
</property>
<property>
<name>maprece.jobhistory.webapp.address</name>
<value>bigdata:19888</value>
</property>
<property>
<name>maprece.jobhistory.done-dir</name>
<value>/jobhistory/done</value>
</property>
<property>
<name>maprece.intermediate-done-dir</name>
<value>/jobhisotry/done_intermediate</value>
</property>
<property>
<name>maprece.job.ubertask.enable</name>
<value>true</value>
</property>
slaves

bigdata
hadoop-env.sh

JAVA_HOME=/usr/java/default/
格式化分布式文件系统(hdfs):hdfs namenode -format
成功的标志: INFO common.Storage: Storage directory /opt/hadoop-2.7.2/current/dfs/namehas been successfully formatted.
启动Hadoop集群:/opt/hadoop-2.7.2/sbin/start-all.sh
验证Hadoop集群是否正常启动:
jps,系统中运行的java进程;
通过端口查看(关闭防火墙或者service iptables stop在防火墙的规则中开放这些端口):
http://bigdata:50070(http://http://192.168.42.209/:50070),分布式文件系统hdfs的情况
yarn http://bigdata:18088(http://http://192.168.42.209/:50070)

❽ 如何部署完全分布式hadoop

安装流程

我们先来回顾上一篇我们完成的单节点的Hadoop环境配置,已经配置了一个CentOS 6.8 并且完成了java运行环境的搭建,Hosts文件的配置、计算机名等诸多细节。

其实完成这一步之后我们就已经完成了Hadoop集群的搭建的一半的工作了,因为我们知道通过虚拟机搭建所搭建的好处就是直接拷贝机器。多台同步进行操作,减少分别配置的时间消耗浪费。这也是虚拟化技术所带来的优势。

下面,咱们进去分布式系统的详细操作过程。

1、首先需要在VMWare中将之前创建的单实例的计算机进行拷贝。

这里根据之前第一篇文章的规划,我们至少需要再克隆出三台计算机,作为DataNode数据节点的数据存储。之前的上一台机器作为Master主节点进行管理。

这里先来梳理一下整个Hadoop集群的物理架构图,大家有一个直接的观念和认识,上表中已经和明确了,总共需要5台服务器来使用,四台用来搭建Hadoop集群使用,另外一台(可选)作为MySQL等外围管理Hadoop集群来使用。

❾ 如何在虚拟机中搭建hadoop

方法/步骤
1
设置虚拟机和本机上的ip

2
可以清楚的看到多出现了两个网卡选项,这里我们使用VMware Network Adapter VMnet1 就行了,然后将其与的一个禁用。启用第一个之后,就要去给这个设置ip地址了,那么这个ip地址应该设置为多少呢?这个可以根据你自己的喜好自己去设置就好了,只要是在有效的网关之内都行
下面是我设置的ip地址

这样设置好了本机的ip地址之后呢,就应该去设置虚拟机的ip地址了,首先要保证虚拟机被本机的通讯方式为host-only模式,即,仅主机模式、
打开VmWare之后呢,去这里设置仅主机模式

-------------------------------------------------------
这里要注意一点,首先一个是虚拟机的ip地址为192.168.80.100和一个是我们自己电脑的上设置的Vmvare Network Adapter Vmnet1的ip地址为192.3168.80.1。设置好了之后打开虚拟机的小黑屏。

END
liniux系统配置
1

2
然后选择第四项打开小黑屏。
打开小黑屏之后一定要记得让网卡重新启动一下,执行命令
Service network restart 来重启网卡

END
修改主机名
1
下一步,修改主机名,为什么要修改linux虚拟机的主机名呢?主要还是方便以后我们访问。
现在我们可以在本机上面使用PieTTY这个工具来连接我们的虚拟机了,这样我们就不用去虚拟机的小黑屏下面操作了,太方便了。

2
然后进进入了network这个文件的更改操作中去了
Vi进入该文件之后默认是不可修改的,只可以看,不可以修改,那么按下键盘上面的i字母,就变成可以修改的状态了

3
然后添加一行,HOSTNAME=hadoop,然后点击键盘右上角Esc键,然后在英文输入法下面输入

4
接着输入:wq 然后回车,保存修改。这样,就永远的把主机名给改成hadoop了,使用hostname来验证主机名

END
主机名和ip地址进行绑定
1
首先为什么要让ip地址和主机名来进行绑定呢,狠简单,每一台电脑在网络中的唯一标识就是本电脑的ip地址,首先可以确定ip地址是永远不会重复的,那么我们每次访问的网络首页其实就是在访问网络主机的ip地址,如果你知道网络主机的ip地址,直接在网址栏里输入ip地址,一样的会访问网络的首页。
既然如此,我们以后直接用ip来访问网页就好了,干嘛还要用www..com呢?首先,用ip来访问也太麻烦了,并且也不便于记忆,所以我们将我们的主机名跟我们的ip地址绑定到一起,以后直接访问我们的主机名就是相当于访问我们的ip地址了。
然后来进行主机名和ip地址进行绑定的操作吧。
还是

2
关闭虚拟机的防火墙

直接执行service iptables stop命令来关闭防火墙

3
到这一步,hadoop设置已完毕,下一篇,将会详细介绍如何设置hadoop源码。。。敬请期待如何搭建hadoop分布式环境,怎样快速搭建<二>

❿ vmware和云服务器能一起搭建hadoop集群吗两台虚拟机一台云服务器 该怎么设置呢

理论上可以的,vmware虚拟机和云服务器其实和传统物理服务器用起来没差别。但如果你说的云服务器是公有云,是vmware在你的局域网,不推荐组合起来搭建hadoop,因为互联网的网络延迟比本地高,集群会不稳,非要做的话,vmware虚拟机需要用dnat映射地址到公网

热点内容
wincc图形编译在哪里 发布:2024-09-17 03:58:26 浏览:977
androidubuntu 发布:2024-09-17 03:50:27 浏览:701
识梦源码 发布:2024-09-17 03:50:18 浏览:26
诺基亚密码忘了打什么电话 发布:2024-09-17 03:27:09 浏览:555
树深度优先算法 发布:2024-09-17 03:26:58 浏览:472
跳转页源码 发布:2024-09-17 03:13:05 浏览:543
html文件上传表单 发布:2024-09-17 03:08:02 浏览:785
聊天软件编程 发布:2024-09-17 03:00:07 浏览:726
linuxoracle安装路径 发布:2024-09-17 01:57:29 浏览:688
两个安卓手机照片怎么同步 发布:2024-09-17 01:51:53 浏览:207