hadoop(1)ssh连接与hadoop搭建

来源:互联网 发布:2017fc2破解版域名设置 编辑:程序博客网 时间:2024/05/22 12:56

Hadoop2.7.3单机安装配置参考http://blog.csdn.net/qjk19940101/article/details/70544197

1. 环境

Ubuntu 16.04 
vmware 
hadoop 2.7.3 
java 1.7.0_75

master:192.168.224.135 
slave1:192.168.224.131 
slave2:192.168.224.134

2. 步骤

2.1 ssh连接

1、添加 hadoop用户,并添加到sudoers

sudo adduser hadoop

sudo vim /etc/sudoers

添加如下:

# User privilege specification

root ALL=(ALL:ALL) ALL

hadoop ALL=(ALL:ALL) ALL

2切换到 hadoop用户:

su hadoop

3、修改 /etc/hostname主机名为 master

sudo vim /etc/hostname

//该步骤修改完毕之后需要进行重启系统,属于永久性修改主机名的方式

4、修改 /etc/hosts

添加如下:

# hadoop nodes ;

192.168.224.135 master

192.168.224.131 slave1

192.168.224.134 slave2

5、安装配置 java环境 

JAVA_HOME=/usr/local/java/jdk1.7.0_75

PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

export JAVA_HOME

export PATH

//profile文件中关于java的环境变量
验证:java -version

6、安装 openssh-server

sudo apt-get install openssh-server

7、对于 slave1slave2可采用虚拟机clone的方法实现复制,复制主机后注意修改/etc/hostnameslave1slave2

/etc/hostname中修改的名称为永久修改的方式,修改之后需要重启系统才可以。

8、配置 master节点可通过SSH无密码访问slave1slave2节点

ssh-keygen -t rsa

//该步骤后有3个空需要填,全部为空即可

cat .ssh/id_rsa.pub >> .ssh/authorized_keys

将生成的 authorized_keys 文件复制到 slave1 和 slave2 的 .ssh目录下

scp .ssh/authorized_keys hadoop@slave1:~/.ssh

scp .ssh/authorized_keys hadoop@slave2:~/.ssh

//在该处要很注意检查一下ip地址是否与本机ip地址相符,ifconfig可以查看本机ip

9、测试连接是否成功

ssh slave1或ssh slave2

 

2.2.hadoop环境配置

2.2.1.解压直接使用

我们选择将Hadoop安装至/usr/local/中:

sudo tar -zxf ~/Desktop/hadoop-2.7.3.tar.gz -C /usr/local  #解压到/usr/local中

cd /usr/local/

sudo mv ./hadoop-2.7.3/ ./hadoop  #将文件夹名改为hadoop

sudo chown -R hadoop ./hadoop     #修改文件权限  

Hadoop解压后即可使用。输入如下命令来检查Hadoop是否可用,成功则会显示Hadoop版本信息:

cd /usr/local/hadoop

./bin/hadoop version

 

2.2.2.配置hadoop的环境变量

Sudo vim /etc/profile

 

# set hadoop classpath

export HADOOP_HOME=/home/hadoop/software/hadoop-2.7.3

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

export HADOOP_PREFIX=$HADOOP_HOME

export CLASSPATH=$CLASSPATH:.:$HADOOP_HOME/bin

2.2.3.配置hadoop配置文件

cd /usr/local/hadoop/etc/hadoop

 

//进入hadoop文件夹,修改hadoop配置文件,主要配置core-site.xml、mapred-site.xml、yarn-site.xml文件。

 

 

Core-site.xml

<configuration>

        <property>

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

                <value>/usr/local/hadoop/tmp</value>

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

        </property>

        <property>

                <name>fs.defaultFS</name>

                <!--master:/etc/hosts 配置的域名 master -->

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

        </property>

</configuration>

//进入各个文件的时候要使用root身份,不然无法进行写操作。

 

Hdfs-site.xml

<configuration>

        <property>

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

                <value>/usr/local/hadoop/tmp/dfs/namenode</value>

        </property>

        <property>

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

                <value>/usr/local/hadoop/tmp/dfs/datanode</value>

        </property>

        <property>

                <name>dfs.replication</name>

                <value>1</value>

        </property>

        <property>

                <name>dfs.namenode.secondary.http-address</name>

                <value>master:9001</value>

        </property>

</configuration>

 

mapred-site.xml

hadoop/etc/hadoop 下没有mapred-site.xml,只有mapred.xml.template

默认情况下,/usr/local/hadoop/etc/hadoop/文件夹下有mapred.xml.template文件,我们要复制该文件,并命名为mapred.xml,该文件用于指定MapReduce使用的框架。
    
    复制并重命名
    cp mapred-site.xml.template mapred-site.xml
    编辑器打开此新建文件
    sudo gedit mapred-site.xml然后编辑mapred-site.xml

<configuration>

        <property>

                <name>mapreduce.framework.name</name>

                <value>yarn</value>

        </property>

        <property>

                <name>mapreduce.jobhistory.address</name>

                <value>master:10020</value>

        </property>

        <property>

                <name>mapreduce.jobhistory.webapp.address</name>

                <value>master:19888</value>

        </property>

</configuration>

 

yarn-site.xml

<configuration>

 

<!-- Site specific YARN configuration properties -->

 

        <property>

                <name>yarn.nodemanager.aux-services</name>

                <value>mapreduce_shuffle</value>

        </property>

        <property>

                <name>yarn.nademanager.aux-services.mapreduce.shuffle.class</name>

                <value>org.apache.hadoop.mapred.ShuffleHandler</value>

 

        </property>

        <property>

                <name>yarn.resourcemaneger.address</name>

                <value>master:8032</value>

        </property>

        <property>

                <name>yarn.resourcemanager.scheduler.address</name>

                <value>master:8030</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.resourcemanager.webapp.address</name>

                <value>master:8088</value>

        </property>

 

</configuration>

 

ResourceManager相关配置参数

1) yarn.resourcemanager.address

参数解释:ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等。

默认值:${yarn.resourcemanager.hostname}:8032

2) yarn.resourcemanager.scheduler.address

参数解释:ResourceManager ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。

默认值:${yarn.resourcemanager.hostname}:8030

3) yarn.resourcemanager.resource-tracker.address

参数解释:ResourceManager NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。

默认值:${yarn.resourcemanager.hostname}:8031

4) yarn.resourcemanager.admin.address

参数解释:ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。

默认值:${yarn.resourcemanager.hostname}:8033

5) yarn.resourcemanager.webapp.address

参数解释:ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。

默认值:${yarn.resourcemanager.hostname}:8088

6) yarn.resourcemanager.scheduler.class

参数解释:启用的资源调度器主类。目前可用的有FIFO、Capacity Scheduler和Fair Scheduler。

默认值:

org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

7) yarn.resourcemanager.resource-tracker.client.thread-count

参数解释:处理来自NodeManager的RPC请求的Handler数目

默认值:50

8) yarn.resourcemanager.scheduler.client.thread-count

参数解释:处理来自ApplicationMaster的RPC请求的Handler数目

默认值:50

9) yarn.scheduler.minimum-allocation-mb/ yarn.scheduler.maximum-allocation-mb

参数解释:单个可申请的最小/最大内存资源量。比如设置为1024和3072,则运行MapRedce作业时,每个Task最少可申请1024MB内存,最多可申请3072MB内存。

默认值:1024/8192

10) yarn.scheduler.minimum-allocation-vcores / yarn.scheduler.maximum-allocation-vcores

参数解释:单个可申请的最小/最大虚拟CPU个数。比如设置为1和4,则运行MapRedce作业时,每个Task最少可申请1个虚拟CPU,最多可申请4个虚拟CPU。什么是虚拟CPU,可阅读我的这篇文章:“YARN 资源调度器剖析”。

默认值:1/32

11) yarn.resourcemanager.nodes.include-path /yarn.resourcemanager.nodes.exclude-path

参数解释:NodeManager黑白名单。如果发现若干个NodeManager存在问题,比如故障率很高,任务运行失败率高,则可以将之加入黑名单中。注意,这两个配置参数可以动态生效。(调用一个refresh命令即可)

默认值:“”

12) yarn.resourcemanager.nodemanagers.heartbeat-interval-ms

参数解释:NodeManager心跳间隔

默认值:1000(毫秒)

2.    NodeManager相关配置参数

1) yarn.nodemanager.resource.memory-mb

参数解释:NodeManager总的可用物理内存。注意,该参数是不可修改的,一旦设置,整个运行过程中不可动态修改。另外,该参数的默认值是8192MB,即使你的机器内存不够8192MB,YARN也会按照这些内存来使用(傻不傻?),因此,这个值通过一定要配置。不过,Apache已经正在尝试将该参数做成可动态修改的。

默认值:8192

2) yarn.nodemanager.vmem-pmem-ratio

参数解释:每使用1MB物理内存,最多可用的虚拟内存数。

默认值:2.1

3) yarn.nodemanager.resource.cpu-vcores

参数解释:NodeManager总的可用虚拟CPU个数

默认值:8

4) yarn.nodemanager.local-dirs

参数解释:中间结果存放位置,类似于1.0中的mapred.local.dir。注意,这个参数通常会配置多个目录,已分摊磁盘IO负载。

默认值:${hadoop.tmp.dir}/nm-local-dir

5) yarn.nodemanager.log-dirs

参数解释:日志存放地址(可配置多个目录)。

默认值:${yarn.log.dir}/userlogs

6) yarn.nodemanager.log.retain-seconds

参数解释:NodeManager上日志最多存放时间(不启用日志聚集功能时有效)。

默认值:10800(3小时)

7) yarn.nodemanager.aux-services

参数解释:NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序

3. 修改env环境变量文件,为hadoop-env.sh、mapred-env.sh、yarn-env.sh文件添加JAVA_HOME:

# The java implementation to use.

# export JAVA_HOME=${JAVA_HOME}

export JAVA_HOME=/usr/local/java/jdk1.7.0_75

4. 配置slaves文件

Slave1

Slave2

5. slave1和slave2节点复制hadoop2.7.3整个目录至相同位置

scp -r /usr/local/hadoop hadoop@slave1:/usr/local/hadoop

scp -r /usr/local/hadoop hadoop@slave2:/usr/local/hadoop

//没有加-r的话可能会出现not a regular file的问题

 

2.3启动hadoop

2.3.1.初始格式化文件系统,在hadoop目录下 bin/hdfs namenode -format

一直出现java.io.IOException: Cannot create directory /usr/local/hadoop/tmp/dfs/namenode/current的问题导致namenode初始格式化不成功,输入命令: sudo chmod -R a+w /usr/local/hadoop更改权限之后,再次输入,成功实现。

 

Successfully formatted代表成功。Exiting with status 0,说明没有错误。

2.3.2.启动 Hadoop 集群 start-all.sh

hadoop目录下输入命令:./sbin/start-all.sh

./sbin/start-dfs.sh

//启动hdfs

./sbin/start-yarn.sh

//启动yarn

2.3.3.jps 输出运行的 java进程:

启动完成后,可以通过命令jps来判断是否成功启动,若成功启动则会列出如下进程: 
“NameNode”,”DataNode”,”SecondaryNameNode”(如果SecondaryNameNode没有启动,请运行sbin/stop-dfs.sh关闭进行,然后再次尝试启动尝试)。如果没有NameNode或DataNode,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。

注意检查ip地址是否正确,下一次打开的时候只需要./sbin/start-all.sh即可,不需要再进行namenode节点格式化

2.3.4.浏览器查看 HDFS:http://192.168.224.135:50070

 

 

2.3.5.浏览器查看 mapreduce:http://192.168.224.135:8088

 

2.4.停止hadoop

./sbin/stop-all.sh



以上附带了实验过程中遇到的一些问题以及解决的方式,欢迎批评指正。


原创粉丝点击