01-Hadoop伪分布式安装

1.准备Linux环境

1.修改主机名

vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=itcast    ###

2.修改IP

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
BOOTPROTO="static"               ###
HWADDR="00:0C:29:3C:BF:E7"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
IPADDR="192.168.1.101"           ###
NETMASK="255.255.255.0"          ###
GATEWAY="192.168.1.1"            ###
service network restart ##重启网卡设置生效

3.修改IP和主机名的映射关系

vim /etc/hosts

192.168.1.101   itcast

4.关闭防火墙

#查看防火墙状态
service iptables status
#关闭防火墙
service iptables stop
#查看防火墙开机启动状态
chkconfig iptables --list
#关闭防火墙开机启动
chkconfig iptables off

5.配置SSH免密钥登陆

1.生成公钥
    cd ~/.ssh
    ssh-keygen -t rsa (一路回车)
2.将公钥拷贝到要免登陆的机器上
    scp     id-rsa.pub      spark01:/home/hadoop  
3.在要免登陆的机器上在.ssh目录下新建文件authorized_keys权限600(授权文件)
    touch     authorized_keys
    chmod   600  authorized_keys
4.把公钥追加到authorized_keys文件中
    cat ./id_rsa.pub >> ./authorized_keys
另一种方式
1.生成公钥
    cd ~/.ssh
    ssh-keygen -t rsa (一路回车)
2.复制SSH密钥到目标主机,开启无密码SSH登录
    ssh-copy-id user@host

//修改权限
chmod 700 -R .ssh

6.Linux给用户添加sudo权限

#vi /etc/sudoers

root    ALL=(ALL)    ALL     
hadoop  ALL=(ALL)    ALL ##添加用户

7.重启Linux

reboot

2.安装JDK

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

3.hadoop伪分布式安装

1.修改hadoop的配置文件,在$HADOOP_HOME/etc/hadoop目录下修改
1.1hadoop-env.sh

vim hadoop-env.sh
#第27行
export JAVA_HOME=/usr/java/jdk1.7.0_65##因为hadoop不知道为什么会读取不到环境变量

1.2core-site.xml

<configuration>
<!-- 指定HADOOP默认的文件系统schema(URI)=hdfs(协议)://weekend110(hdfs主节点):9000 -->
<!--这是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。-->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://weekend-1206-01:9000</value>
</property>
<!—hadoop.tmp.dirhadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenodedatanode的存放位置,默认就放在这个路径中-->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/hadoop-2.4.1/tmp</value>
</property>
</configuration>

1.3hdfs-site.xml

默认block块的大小128M
<基本的配置>
<!-- dfs.replication -它决定着系统里面的文件块的数据备份个数。对于一个实际的应用,它 应该被设为3(这个数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。
少于三个的备份,可能会影响到数据的可靠性(系统故障时,也许会造成数据丢失)-->
 <property>
     <name>dfs.replication</name>
     <value>1</value>
 </property>

<可选配置> 
<!--  dfs.data.dir -这是DataNode结点被指定要存储数据的本地文件系统路径。DataNode结点上的这个路径没有必要完全相同,因为每台机器的环境很可能是不一样的。
但如果每台机器上的这个路径都是统一配置的话,会使工作变得简单一些。默认的情况下,它的值hadoop.tmp.dir, 这个路径只能用于测试的目的,因为,它很可能会丢失掉一些数据。
所以,这个值最好还是被覆盖。dfs.name.dir - 这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用到它。
上面对于/temp类型的警告,同样也适用于这里。在实际应用中,它最好被覆盖掉。-->
<property>
    <name>dfs.name.dir</name>
    <value>/home/hdfs/name</value>
</property>
<property>
    <name>dfs.data.dir</name>
    <value>/home/hdfs/data</value>
</property>

<!—解决:org.apache.hadoop.security.AccessControlException:Permissiondenied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 。
因为Eclipse使用hadoop插件提交作业时,会默认以 DrWho 身份去将作业写入hdfs文件系统中,对应的也就是 HDFS 上的/user/hadoop ,
由于DrWho 用户对hadoop目录并没有写入权限,所以导致异常的发生。
解决方法为:放开 hadoop 目录的权限, 命令如下 :$ hadoop fs -chmod 777 /user/hadoop -->
<property> 
    <name>dfs.permissions</name>
    <value>false</value>
    <description>
      If "true", enable permission checking in HDFS. If "false", permission checking is turned off,but all other behavior is unchanged. 
Switching from one parameter value to the other does not change the mode, owner or group of files or directories
    </description>
</property>

1.4mapred-site.xml (mv mapred-site.xml.template mapred-site.xml)

mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

1.5yarn-site.xml

<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>weekend-1206-01</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

2.将hadoop添加到环境变量中

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

3.格式化nanmenode

hdfs namenode -format (hadoop namenode -format)

4.启动hadoop

先启动HDFS
sbin/start-dfs.sh
再启动YARN
sbin/start-yarn.sh

5.验证启动是否成功

使用jps命令验证
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode

http://192.168.1.101:50070 (HDFS管理界面)
http://192.168.1.101:8088 (MR管理界面)

yarn验证
跑hadoop自带例子程序
hadoop jar app/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /input /output
hadoop   jar   hadoop-mapreduce-examples-2.4.1.jar    wordcount   /wordcount/input   /wordcount/outp    统计单词数量

猜你喜欢

转载自blog.csdn.net/wang11yangyang/article/details/57990599